为什么我不能在for循环中第一次输入另一个字符串?

时间:2015-05-09 20:38:45

标签: java arrays string for-loop java.util.scanner

我想创建一个程序,允许我为5个不同的人输入姓名,年龄和出生年份。但是,在我输入for循环中的第一个后,我遇到了无法输入其他名称的问题。这是我的代码:

public static void main(String[] args) {

    String[] names = new String[5];
    int[] s = new int[5];
    Scanner keyboard = new Scanner (System.in);

    for (int i = 0; i < 5; i++) {
        System.out.print("Name: ");
        names[i] = keyboard.nextLine();
        System.out.print("Age: ");
        s[i] = keyboard.nextInt();
        System.out.print("Year: ");
        s[i] = keyboard.nextInt();
    }
}

程序在我运行时运行正常,但在我输入第一个程序后,它不允许我输入其他4个名字。这是我得到的输出:

sample output

2 个答案:

答案 0 :(得分:3)

请注意:

String java.util.Scanner.next() - Returns:the next token
String java.util.Scanner.nextLine() - Returns:the line that was skipped

更改您的代码[在初始行时执行]如下所示:

names[i] = keyboard.next();

答案 1 :(得分:2)

看看 - 我修复了你的代码添加“keyboard.nextLine();”最后。

public static void main(String[] args) {


        String[] names = new String[5];
        int[] s = new int[5];
        Scanner keyboard = new Scanner (System.in);

        for (int i = 0; i < 5; i++) {

            System.out.print("Name: ");
            names[i] = keyboard.nextLine();
            System.out.print("Age: ");
            s[i] = keyboard.nextInt();
            System.out.print("Year: ");
            s[i] = keyboard.nextInt();
            keyboard.nextLine();
        }
    }

您需要添加它的原因是“nextInt()”只会读取您输入的内容而不是其余内容。该行的剩余部分将由“names [i] = keyboard.nextLine();”读取。自动。

通过在结尾添加另一个“keyboard.nextLine()”,我跳过了该行的左边,然后“names [i] = keyboard.nextLine();”获取一个新行来读取输入。

Java中的每个初学者迟早都会遇到这个问题:)