用于循环组合线

时间:2018-11-05 04:00:09

标签: java loops

我正在尝试编写一个for循环,该循环将允许用户输入五个名称和年龄。我遇到的问题是,它第一次正确运行,但是第二次运行时,名字和姓氏结合在一起,不允许两个字符串输入。它将允许随后移动到整数条目以获取年龄。任何帮助表示赞赏。

import java.util.Scanner;

public class QueueImp extends people{

    public static void main(String[] args) {
        String userL;
        String userF;
        int userA;
        int userchoice = 0;

        Scanner scnr = new Scanner(System.in);

        for(int i = 0; i<5; i++) {      
        System.out.print("Please enter last name: ");
        userL = scnr.nextLine();
        System.out.println("");
        System.out.println("Please enter first name: ");
        userF = scnr.nextLine();
        System.out.println("Please enter age: ");
        userA = scnr.nextInt();
        System.out.println("");
        pName(userL, userF, userA);
 }

3 个答案:

答案 0 :(得分:1)

原因是尚未使用换行符(输入整数)。因此,下一个循环迭代的scnr.nextLine()将消耗掉它,因此跳过了第二个姓氏输入。要使用换行符,请在扫描整数后立即再添加1个scnr.nextLine()

for(int i = 0; i<5; i++) {      
    System.out.print("Please enter last name: ");
    userL = scnr.nextLine();
    System.out.println("");
    System.out.println("Please enter first name: ");
    userF = scnr.nextLine();
    System.out.println("Please enter age: ");
    userA = scnr.nextInt();
    System.out.println("");
    scnr.nextLine();
    pName(userL, userF, userA);
}

答案 1 :(得分:1)

请使用由next插入的nextLine

System.out.print("Please enter last name: ");
userL = scnr.next();

next()只能读取输入,直到空格为止。它无法读取两个用空格隔开的单词。另外,next()在读取输入后将光标置于同一行。

@编辑: nextLine()读取包含单词之间的空格的输入(即,读取直到\ n行的结尾)。读取输入后,nextLine()将光标置于下一行。

要阅读整行,可以使用nextLine()

以供参考:What's the difference between next() and nextLine() methods from Scanner class?

如果要使用,请像这样使用Integer.parseInt来消耗新行字符

userA = Integer.parseInt(scnr.nextInt());

答案 2 :(得分:0)

使用scnr.next()将解决您的问题。

为什么它不能与scnr.nextLine()一起使用,是因为next()仅返回空格之前的内容。返回当前行后,nextLine()会自动将扫描仪向下移动。您无法输入细节的第二次迭代的原因是,指针已经在第二次迭代本身之前向前移动。

System.out.print("Please enter last name: ");
userL = scnr.next();
System.out.println("Please enter first name: ");
userF = scnr.next();
System.out.println("Please enter age: ");
userA = scnr.nextInt();
System.out.println(userL + " " + userF + " " + userA);