容量为5的字符串数组将只显示前4个元素(java-scanner类)

容量为5的字符串数组将只显示前4个元素(java-scanner类),java,Java,我是java编程新手,通过scanner类学习输入。我的程序接受容量为5的字符串数组,并将其显示给用户 但是,数组只接受4,我不知道为什么。任何帮助都将不胜感激 我的代码 接受字符串数组 String n[] = new String[5]; for (int i = 0 ; i<5 ; i++) { n[i] = sc.nextLine(); } for(int i=0 ; i<5 ; i++) {

我是java编程新手,通过scanner类学习输入。我的程序接受容量为5的字符串数组,并将其显示给用户

但是,数组只接受4,我不知道为什么。任何帮助都将不胜感激

我的代码 接受字符串数组

    String n[] = new String[5];

    for (int i = 0 ; i<5 ; i++)
    {
        n[i] = sc.nextLine();
    }
    for(int i=0 ; i<5 ; i++)
    {
        System.out.println(n[i]);
    }
String n[]=新字符串[5];

对于(int i=0;i而言,如果您提供有关输入源的信息,这将非常有用。但是,
sc.nextLine()
始终将扫描仪前进到下一行(不包括行末尾的任何行分隔符)

给定(例如)“test.txt”等输入文件,您的代码是正确的:

第1行

第2行

第3行

第4行

第5行


我会确保您的输入之间没有空格,并且您不会意外地调用代码前面的某个地方的
sc.nextLine()
(或任何扫描器
next
方法)。

可能您从文件中读取,最后一行不会以换行结束

扫描仪
可以首先测试下一行是否可用:

String[] n = new String[5];
for (int i = 0; i < 5; i++) {
    if (!sc.hasNextLine()) {
        System.out.println("Failing to read line at index " + i);
        break;
    }
    n[i] = sc.nextLine();
}
String[]n=新字符串[5];
对于(int i=0;i<5;i++){
如果(!sc.hasNextLine()){
System.out.println(“未能读取索引“+i”处的行);
打破
}
n[i]=sc.nextLine();
}

请注意,
String[]n
是编写数组变量的常用方法。
String n[]
是为C程序员编写的。

我创建了一个测试脚本,其中包含您的代码,它对我有效。您的输入和相应的输出是什么?对我有效。您可以复制/粘贴整个
main()吗
method?有人告诉我,这是@Pshemo是的,我正在使用scanner类的next().charAt(0)函数,在接受数组之前,它正在接受字符数组…我不知道这会是一个问题,如何解决这个问题?用这些信息编辑你的问题,代码。我已经使用了next().charAt(0)函数在调用nextline()函数之前接受字符数组。我不知道这会有问题,如何解决?