我正在尝试将一系列字母作为字符串添加到2D数组中。所以object [17]
转到endState[0][0]
; [18]
到endState[0][1]
等等。
我遇到的问题是使用外部for循环,它只是将[32]
处的对象添加到矩阵中的所有单元格。通常我会在使用其他集合时使用迭代器来处理这个问题,但是,据我所知,对于数组是不可能的(我可能已经猜到了我是新手)。
String [][] endState = new String[4][4];
for(int i1=17;i1<33;i1++){
for(int r=0;r<endState.length;r++){
for(int c=0;c<endState.length;c++){
endState[r][c] = config.split("")[i1];
}
}
}
关于如何克服这个问题的任何建议?
非常感谢。
答案 0 :(得分:2)
你需要这样的东西吗?
String[] configs = config.split("");
String [][] endState = new String[4][4];
int i = 17;
for(int r=0;r<endState.length;r++){
for(int c=0;c<endState.length;c++){
endState[r][c] = configs[i++];
}
}
答案 1 :(得分:2)
如果你想把字母变成你可以做的。
String[] letters = config.substring(17).split("");
String[][] endState = new String[4][];
for (int i = 0; i < endState.length; i++)
endState[i] = Arrays.copyOf(letters, i * 4, 4);
或者你可以做到
String[][] endState = IntStream.range(0, 4)
.mapToObject(i -> Arrays.copyOf(letters, i * 4, 4))
.toArray(s -> new String[s][]);
答案 2 :(得分:0)
如果使用Java 8,则可以按如下方式执行:
Arrays.asList(someArray).foreach(item -> {});
或
Arrays.asList(someArray).stream().ANY_STREAM_FUNCTION_HERE
如果你想迭代你的2dim数组:
Arrays.asList(someArray).foreach(item -> {
Arrays.asList(item).foreach(item2 -> {[Do your job here]})
});
你可以用Java 7的方式做到这一点:
for(item : Arrays.asList(someArray)) {
...
}
无论如何,您总是可以使用Arrays.asList(someArray)
从数组中获取列表。