我还是编程的初学者。
我的字符串值不会在数组上输入
如果我输入" y"在输入所有a b c之后,然后输入a b c数组刚刚获得最后一个
String a, b, c, d;
int x = 0;
Scanner in = new Scanner(System.in);
do {
x++;
int e = x - 1;
array = new String[x][3];
System.out.println("input a : ");
a = in.nextLine();
array[e][0] = a;
System.out.println("input b : ");
b = in.nextLine();
array[e][1] = b;
System.out.println("input c : ");
c = in.nextLine();
array[e][2] = c;
System.out.println("Again ? (y/n)");
d = in.nextLine();
} while (d.equals("y"));
for (int i = 0; i < array.length; i++) {
System.out.println("Output "+(i+1)+" : ");
System.out.println("a :" + array[i][0]);
System.out.println("b :" + array[i][1]);
System.out.println("c :" + array[i][2]);
System.out.println("");
}
}
答案 0 :(得分:0)
在do-while
循环中,您在每次迭代中为String
分配一个新的array
数组。因此,它不会存储以前输入的值。因此,最后当您打印它时,您将只获得最后输入的条目,之前输入的条目将为null
,因为新的定义数组最初的所有元素都为null
。
因此,您需要在do-while
循环之外定义数组。
array = new String[4][3]; //Define array here of any appropriate size
do {
x++;
int e = x - 1;
System.out.println("input a : ");
a = in.nextLine();
array[e][0] = a;
System.out.println("input b : ");
b = in.nextLine();
array[e][1] = b;
System.out.println("input c : ");
c = in.nextLine();
array[e][2] = c;
System.out.println("Again ? (y/n)");
d = in.nextLine();
} while (d.equals("y"));
如果您不知道Array
的总大小,则可以使用ArrayList<String>
之类的动态结构。您可以手动使用ArrayList of ArrayList
或不同的ArrayList
,但如果您的总输入数量更多,则最好使用ArrayList of ArrayList
。
不同的ArrayLists:
这种方法在这里会有所帮助如果您知道可能的总输入数。我们知道我们总共有3
个输入a
,b
和c
因此为每个3
{定义a
个数组列表{ {1}}和b
。
c