使用 for 循环将字符串存储在锯齿状数组中
store strings in a jagged array using for loop
我遇到了这个 并想重新创建它但用字符串数组而不是整数填充它。我想使用数组而不是 ArrayList 只是因为我是初学者并且想更多地练习数组。我几乎复制了代码,但输出中一直出现错误。这是我的代码:
Scanner input = new Scanner(System.in);
System.out.print("Enter number of arrays: ");
int x = input.nextInt();
String [][] array = new String[x][0];
for(int i = 0; i < x; i++){
System.out.print("Enter number of elements for array: ");
int s = input.nextInt();
array[i] = new String[s];
for(int j = 0; j < s ; j++){
System.out.print("Enter string: ");
String word = input.nextLine();
array[i][j] = word;
}
}
我的输出是:
Enter number of arrays: 2
Enter number of elements for array: 3
Enter string: Enter string: hello
Enter string: hi
Enter number of elements for array: 2
Enter string: Enter string: goodbye
为什么每次都打印两次"Enter string"?这个逻辑对我来说很有意义,所以我不确定是什么导致了错误的输出。是 for 循环还是字符串的工作方式?对代码的解释和帮助将不胜感激。谢谢
逻辑是正确的,但是 nextInt()
方法只读取数字而不是你在它后面键入的 'enter' 字符,所以当你调用 nextLine()
方法时,第一次在你的循环中读取 'enter' 字符,第二次读取你的输入,第三次读取。
为避免此问题,您可以在 nextInt()
之后调用 nextLine()
,而不将其分配给变量,以便它读取未决字符:
for(int i = 0; i < x; i++){
System.out.print("Enter number of elements for array: ");
int s = input.nextInt();
input.nextLine();
array[i] = new String[s];
for(int j = 0; j < s ; j++){
System.out.print("Enter string: ");
String word = input.nextLine();
array[i][j] = word;
}
问题只是 input.nextInt() 没有抓取换行符。如果你只是在每行 input.nextInt() 之后粘贴 input.nextLine(),它应该可以工作。
我遇到了这个
Scanner input = new Scanner(System.in);
System.out.print("Enter number of arrays: ");
int x = input.nextInt();
String [][] array = new String[x][0];
for(int i = 0; i < x; i++){
System.out.print("Enter number of elements for array: ");
int s = input.nextInt();
array[i] = new String[s];
for(int j = 0; j < s ; j++){
System.out.print("Enter string: ");
String word = input.nextLine();
array[i][j] = word;
}
}
我的输出是:
Enter number of arrays: 2
Enter number of elements for array: 3
Enter string: Enter string: hello
Enter string: hi
Enter number of elements for array: 2
Enter string: Enter string: goodbye
为什么每次都打印两次"Enter string"?这个逻辑对我来说很有意义,所以我不确定是什么导致了错误的输出。是 for 循环还是字符串的工作方式?对代码的解释和帮助将不胜感激。谢谢
逻辑是正确的,但是 nextInt()
方法只读取数字而不是你在它后面键入的 'enter' 字符,所以当你调用 nextLine()
方法时,第一次在你的循环中读取 'enter' 字符,第二次读取你的输入,第三次读取。
为避免此问题,您可以在 nextInt()
之后调用 nextLine()
,而不将其分配给变量,以便它读取未决字符:
for(int i = 0; i < x; i++){
System.out.print("Enter number of elements for array: ");
int s = input.nextInt();
input.nextLine();
array[i] = new String[s];
for(int j = 0; j < s ; j++){
System.out.print("Enter string: ");
String word = input.nextLine();
array[i][j] = word;
}
问题只是 input.nextInt() 没有抓取换行符。如果你只是在每行 input.nextInt() 之后粘贴 input.nextLine(),它应该可以工作。