私はユーザからの入力を受け取り、数字24を入力します。String
に数字0-5を付け、各数字を4回繰り返します。例は000011112222333344445555
のようになります。私は2d int array of [6][4]
で私がそれらを持つことができないユーザーの番号を収集しているときに気づいた。私は何をしたいのですか?私がしたいことは、その文字列を取り、その配列に数字のそれぞれを入れることです。だから、これは[[0,0,0,0],[1,1,1,1],[2,2,2,2],[3,3,3,3],[4,4,4,4],[5,5,5,5]]
のようになります。私はこのような配列にそれらをどうやって入れるのか分かりません。私は文字列が不変であることを知っているので、文字列を変更することはできませんが、文字列を受け取り、char
配列に変換して、それぞれの値を必要なint配列に挿入できると思いました。私はこれをどうやって行うのかわからないので、これにアプローチする方法や指針は本当に感謝しています。先にありがとう文字列を2次元配列に変換するJava
答えて
2次元配列を1つのライナーで得ることができます:
int[][] numbers = Arrays.stream("000011112222333344445555".split("(?<=\\G.{4})")).map(s -> (Arrays.stream(s.split("(?<=\\G.{1})")).mapToInt(Integer::parseInt).toArray())).toArray(int[][]::new);
あなたの文字列には4つの繰り返し要素が必要であることがわかっているので、私は4回繰り返した後に新しい値が続くと仮定します。だから、それはN×4のアレイのように思える。
このようにすれば、私は擬似コードを使ってあなたを手伝うことができます。
のint [] [] MyArrayという=新しいint型[str.length/4]私たちは "000011112222" 私達の全体の長さが12 12/4である持っている場合である知っているので、[4]
を私たちは4で割ます3と3列が必要です。 4は、私たちが持っている列の量であり、それは4だけであることがわかります。
その後、ここでは区切り文字なしで値を順に入力していると仮定します。私たちはできます:
int col = 0;
int row = 0;
for(i from 0 to string length) {
if((I+1) % 4 != 0) {
//keep adding to myArray[row][col]
//row++
}
} else { // so we now hit new numbers
col++;
row = 0;
}
}
ここで私は1つのfor-loopに固執しようとしました。私は二重のfor-loopでそれを行うことを考えていましたが、最初は空の配列を扱っているので、この場合はどうやってアプローチするのかは分かりませんでした。
クイック編集、あなたができることの1つ、btw。ように2Dのリストを作るです:
List<List<String>> strings = new ArrayList<List<String>>()
int index = 0;
while (index < text.length()) {
String pattern = text.substring(index, Math.min(index + 4,text.length()));
List<String> splitPattern = Arrays.asList(pattern.split(""));
strings.add(splitPattern);
index += 4;
}
ので、ここでのロジックは、我々は、サブストリングは、区切り文字が何もないように言い換えれば、何もそれだけで0、0、0、0を生成しないだろう「」それを分割しますです。リストのリストに追加して、strings.get(I).get(j);と言ってアクセスします。
これはかなり簡単なことです。最後に
lets assume your string is str;
char[] strArr = str.toCharArray();
// numbers is the range like 0 to 5 here.
// repeatCount is how many times its repeating like 4 here.
int arr[][] = new int[numbers][repeatCount];
for(int i = 0; i < numbers; i++){
for(int j = 0; j < repeatCount; j++){
arr[i][j] = strArr[i*repeatCount + j]-'0';
}
}
用心、この関数は一つだけcharが選ばれているとして、あなたの番号は、一桁である場合にのみ動作します。https://www.compilejava.net/でテスト
はまた、あなたがより別の何かがあれば動作します:
を私は数字0-5と各番号と24の長さの文字列を入力し はラインに
import java.util.ArrayList;
public class HelloWorld
{
public static void main(String[] args)
{
String s = "00001111222233334444555599";
ArrayList<ArrayList<Integer>> collection = new ArrayList<ArrayList<Integer>>();
for (int i = 0; i <= 9; i++){
collection.add(new ArrayList<Integer>());
}
for (int i = 0; i < s.length(); i++){
int c = Character.getNumericValue(s.charAt(i));
collection.get(c).add(c);
}
for (int i = 0; i <= 9; i++){
System.out.println(collection.get(i));
}
System.out.println(collection);
}
}
を4回繰り返し、
結果:
[0, 0, 0, 0]
[1, 1, 1, 1]
[2, 2, 2, 2]
[3, 3, 3, 3]
[4, 4, 4, 4]
[5, 5, 5, 5]
[]
[]
[]
[9, 9]
[[0, 0, 0, 0], [1, 1, 1, 1], [2, 2, 2, 2], [3, 3, 3, 3], [4, 4, 4, 4], [5, 5, 5, 5], [], [], [], [9, 9]]
- 1. 3次元配列を2次元配列に変換する
- 2. 1次元配列を2次元配列に変換する
- 3. 2次元文字配列
- 4. 文字列を多次元配列に変換する
- 5. 2次元配列をC#でJson文字列に変換するJavaScriptコード
- 6. ランダムに文字列を2次元配列に配置する
- 7. 多次元配列を1次元配列に変換する
- 8. bashシェルスクリプトで1次元配列を2次元配列に変換する
- 9. 2次元セル配列を3次元配列に変換する
- 10. 1次元配列を2次元配列に変換する方法
- 11. 3次元配列からJavaの新しい2次元配列に文字列を分割する方法
- 12. Excel文書を2次元配列に変換する
- 13. 文字列をJavaの文字列配列に変換する
- 14. 文字列を2次元配列に分解する
- 15. C文字列を2次元配列に保存する
- 16. 2次元配列内の文字列(文字*)を格納
- 17. Javaの2次元配列
- 18. Java 2次元配列
- 19. Java 2次元配列ブール
- 20. 文字列をマップから2次元ベクトルに文字変換する
- 21. Cの2次元配列(行列)内の文字列を変更する
- 22. 1次元の文字列配列をjsonファイルに変換する
- 23. 2次元配列の文字列を初期化する
- 24. 文字列phpに多次元配列
- 25. 2次元配列に文字列変数値を代入する方法
- 26. 2次元配列を2次元配列で作成する
- 27. 2次元文字列ポインタ
- 28. 1次元配列からJavaの2次元への高速変換
- 29. 文字列の2次元配列を関数に渡そう
- 30. 2つの1次元配列を1つの2次元配列に変換する - Matlab
正しい軌道に乗っていれば、何か試してからコードを投稿すると修正されます。 – SQLMason
私はJava @ DanAndrews – cuber
で行ったことが二重に変換されてから除算とリマインダを使用して各整数を別々に取得して2darrayに入れることができます –