我想将以下内容读入2d锯齿状数组:
3
7 4
2 4 6
8 5 9 3
我需要在每个输入上增加列大小。我不确定该怎么做。
我的代码如下:
int col = 1;
int[][] values = new int[rows][col];
for(int i = 0; i < values.length; i++){
for(int j = 1; j < col; j++)
{
values[i][j] = kb.nextInt();
col++;
}
}
答案 0 :(得分:5)
这应该这样做。
int[][] values = new int[rows][];
for(int i = 0; i < values.length; i++)
{
values[i] = new int[i+1];
for(int j = 0; j < values[i].length; j++)
{
values[i][j] = kb.nextInt();
}
}
基本上,您首先要定义2d数组应该有多少行。
在for
循环中,为每行及其长度定义1d数组。
答案 1 :(得分:1)
样品
// don't fix the second dimension
int[][] values = new int[rows][];
for(i = 0; i < rows;i ++){
//column size increases for every line input
values[i] = new int[i+1];
for(j = 0; j < values[i].length; j++) {
values[i][j] = kb.nextInt();
}
}
在Java中,数组不必是严格的矩形。变量values
是rows
- 对int
数组的引用的元素数组。这里,values[0]
是1元素int
数组,值[1]是2元素int
数组等。