java字符串数组在for循环中初始化索引0时忽略索引0
import java.util.Scanner;
public class test {
public static Scanner input = new Scanner(System.in);
public static void main(String[] args) {
int num = input.nextInt();
String[] strArr = new String[num];
arrStrMaker(strArr);
}
public static void arrStrMaker(String[] arr){
for (int i = 0; i < arr.length; i++) {
System.out.println("String for index ["+i+"]");
arr[i] = input.nextLine();
System.out.println(arr[i]);
}
}
}
输出:
3
String for index [0]
String for index [1]
注意它是如何完全忽略索引0中的输入,而不在索引0中“插入”任何内容的
import java.util.Scanner;
public class test {
public static Scanner input = new Scanner(System.in);
public static void main(String[] args) {
int num = 3;
String[] strArr = new String[num];
arrStrMaker(strArr);
}
public static void arrStrMaker(String[] arr){
for (int i = 0; i < arr.length; i++) {
System.out.println("String for index ["+i+"]");
arr[i] = input.nextLine();
System.out.println(arr[i]);
}
}
}
输出:
String for index [0]
*注意它没有忽略索引0并等待输入
有什么问题吗?
当我使用int num = input.nextInt();
时,忽略索引0。
使用int num = 3;
时,将在索引0处等待输入
# 1 楼答案
尝试从输入中跳过
newLine
字符,如下所示:# 2 楼答案
nextLine
和nextInt
(事实上,nextLine
和任何其他不是nextLine
的next-anything
调用)的交互都很奇怪。我建议你这样做:创建扫描器(
new Scanner(...)
)后,每次创建扫描器,然后使用next()
而不是nextLine()
。这会将“分隔符”设置为仅换行符,因此现在您的扫描仪将在用户每次点击enter键时为您提供1个标记;这通常是你想要从扫描仪上得到的