我正在尝试将某个数字作为输入并创建一个长度相同的数组。我知道数组从长度0到n-1的索引开始。
我无法弄清楚哪里出了错。
import java.util.Scanner;
public class A {
public static void main(String[] args) {
Scanner read = new Scanner(System.in);
System.out.println("Enter the number of test cases:");
int test = read.nextInt();
String[] name = new String[test];
if (test > 0 && test <= 20) {
System.out.println("Please give " + test + " names:");
for (int i = 0; i < name.length; i++) {
name[i] = read.nextLine();
}
}
}
}
期望:例如,如果输入为9,则数组大小为9 结果:如果输入为9,则数组创建为8
答案 0 :(得分:0)
只需使用.next()
而不是.nextLine()
。它仅解析命令行的下一个元素。使用此功能,您还可以在一行中输入所有名称,因为“扫描仪”由空格字符而不是行分隔。
有关这两种方法的更多信息,请参见Java文档。 https://docs.oracle.com/javase/8/docs/api/java/util/Scanner.html
答案 1 :(得分:0)
问题是在read.nextInt()
之后,您的位置在int之后,即行尾之前,因此循环中的第一个read.nextLine()将读取空行。
您可以在循环之前创建read.nextLine()
,也可以代替nextInt,而可以使用nextLine()进行读取,并可以使用parseInt()强制转换为int,以防万一您确定在int之后按下回车键。
例如。代替
int test = read.nextInt();
做
int test = Integer.parseInt(read.nextLine());
如果您不想要求输入,则可以更改
name[i] = read.nextLine();
到
name[i] = read.next();
答案 2 :(得分:0)
问题不在于数组,而在于read.nextLine()。您可以使用read.next()。