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处的输入时。 最佳答案
nextLine
和nextInt
(实际上是nextLine
以及不是next-anything
的任何其他nextLine
调用)怪异地交互。我建议你这样做:
`input.useDelimiter("\r?\n");`
创建扫描仪(
new Scanner(...)
)后立即创建,然后每次使用扫描仪,然后使用next()
代替nextLine()
。这会将“定界符”仅设置为换行符,因此,现在,扫描程序每次用户按下回车键时,扫描仪就会向您提供1个令牌;这通常是您想要从扫描仪获得的。关于java - 字符串数组在for循环中初始化时忽略索引0,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59529318/