所以我们只进行了一次小型的实践考试,要求我们以下列格式阅读输入作为非图形问题的规则。实际的算法并不难做到,但我和我的伙伴都没有想到如何开始甚至扫描这些输入。
4 4
1 1
1 2 3
1
1
0
2
1 1
2 2
*actual 4x4 grid here*
前两个整数表示行数(4)和列数。 (4)因此接下来的四行表示每行的规则(第2行为1 2 3),接下来的四行表示每列的规则(第2列为2 2),依此类推。
在一个学期做C之后,我们只处理了每行具有相同列数的数组,而这个Java模块已经过了四个星期,并没有教会我们处理这类问题。
使用nextInt()和double for循环来扫描一个数组本来很容易,但是如果没有零,那么我们都不能用这个来运行。
1 1 0
1 2 3
1 0 0
1 0 0
考试结束了,但我真的很生气,不知道如何解决这个问题。非常感谢你们的一些见解。
答案 0 :(得分:1)
在Java中,您可以拥有不同长度的多维数组。
试试这个:
int rows = 4; // read
int cols = 4; // read
int[][] arr = new int[rows][]; // notice how we do not tell the cols here
for(int i=0,i<arr.length;i++){
// read line or somehow get the numbers of the line into an array
String line = ...
String[] splitLine = line.split(" ");
int[] rowArr = new int[splitLine.length];
for(int x=0;x<splitLine.length;x++){
// assume no NumberFormatException
rowArr[x] = Integer.parseInt(splitLine[x]);
}
arr[i] = rowArr;
}
然后你的数组有4行,但每行只需要多少列:
{{1,1},{1,2,3},{1},{1}}
这很有效,因为在Java中,多维数组只是对数组的引用数组。