2012-10-09 54 views
1

欲阅读以下为2D交错数组:读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

你有使用数组?他们可能不是最好的数据结构,这取决于你读完数据后你想要做什么。 – Edd

+1

增加列大小并不是问题,你也增加了行大小,这是问题,因此你需要一个动态列表。 – Juvanis

+0

您也可以使用单个数组来保存所有数据。然后编写一个函数,根据单个索引 – Bee

回答

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数组及其长度。

+0

+1找到数组的二维索引,你几秒钟就能更快:) –

+2

@davida。我将等待几秒钟,然后再添加我的下一个答案;) – Baz

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是对int数组的引用的元素数组。这里,values[0]是1元件int阵列,值[1]是一个2元素int阵列等

+0

您应该将内部'for'循环中的'col'更改为更合适的内容。 – Baz

+1

@o_o ..为了上帝的缘故,让这些'='和'+'和';'呼吸一些空气。如果他们死了,我们不能活得太多。这次我已经为你做了。 –