在java中,我想创建并打印一个不规则数组,首先用户必须输入行数,然后在每行中用户必须输入数字列,然后在每列中输入他想要的数字,直到达到他为每行输入的数字为止,例如
4 11 22 33 44
2 51 8
6 92 1 3 5 3 99
在第一行,用户输入4,这样他就可以键入四个数字
在第二行,用户输入2,这样他就可以键入两个数字
在第三行,用户输入6,这样他就可以键入四个数字
之后,它应该打印用户为每一行输入的数字和他键入的任何内容(应该打印上面的示例)
但出于某种原因使用我的代码
int rows , col, m=0 , z=0 ;
System.out.println("enter number of rows");
rows=input.nextInt();
while(z<rows){
System.out.println("in each row enter number of coloms and then enter whatever number you want in there");
col=input.nextInt();
z++;
for(int i =0 ; i<col ; i++) {
m=input.nextInt();}
}
int [][] test1 = new int [rows][m];
for(int i =0 ; i<test1.length ; i++) {
for( int j =0 ; j<test1[i].length ; j++)
System.out.print(test1[i][j]+ " ");
System.out.println();}
所有的输出都是0,但是用户输入的第一行数是正确的,所以我对此没有问题
因此,与其有这样的输出
enter number of rows
3
in each row enter number of coloms and then enter whatever number you want in there
4 11 22 33 44 // for example the user will enter these numbers and it will be printed the way he typed it
2 51 8
6 92 1 3 5 3 99
但我得到了这个结果
enter number of rows
3
4 11 22 33 44 // if the user have entered these numbers it will print all of the array zeros depending on the first number in the last row
2 51 8
6 92 1 3 5 3 99
// this is what I get
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
我一整天都在寻找解决办法,但什么也没找到,有人知道怎么解决这个问题吗?
很抱歉让你读了这么多
2条答案
按热度按时间des4xlb01#
通过使用arraylist而不是int“array”来解决:
正如alex提到的,array不适合这种动态调整大小。大多数情况下,应该首选arraylist而不是array,除非内存/速度非常关键。
edit:使用2d数组为您的问题编写了一个解决方案,但我的建议是更喜欢list:public class stackoverflowquestion{
}
envsm3lx2#
问题数组
我认为用数组解决这个问题的方法是
但是我们不能将数组赋给int[]数组。
数组将是解决此问题的错误数据结构,因为您有不同长度的列。
这是一个更好的选择。
解决方案字符串
在循环询问行数之前,这是外部for循环的条件。
在循环内部,请求作为内部for循环条件的列数
然后在内部请求实际输入的数字,并用它构建一个结果字符串。
输入/输出