gpt4 book ai didi

java - 使用 for 循环将字符串存储在交错数组中

转载 作者:行者123 更新时间:2023-11-30 02:22:50 24 4
gpt4 key购买 nike

我遇到了这个question并想要重新创建它,但用字符串数组而不是整数填充它。我想使用数组而不是 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

为什么每次都会打印两次“输入字符串”?这个逻辑对我来说很有意义,所以我不确定是什么导致了错误的输出。是 for 循环还是字符串的工作方式?对代码的解释和帮助将不胜感激。谢谢

最佳答案

逻辑是正确的,但是 nextInt() 方法只读取数字,而不读取您在其后键入的“enter”字符,因此当您调用 nextLine() 方法,第一次在循环中读取“输入”字符,第二次读取您的输入,第三次读取。为了避免这个问题,您可以在 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;
}

关于java - 使用 for 循环将字符串存储在交错数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46372663/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com