猿问

For 循环组合线

我正在尝试编写一个 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);

 }


慕森王
浏览 148回答 3
3回答

慕桂英3389331

请使用nextinsted的的nextLineSystem.out.print("Please&nbsp;enter&nbsp;last&nbsp;name:&nbsp;"); userL&nbsp;=&nbsp;scnr.next();next()只能读取输入直到空格。它无法读取由空格分隔的两个单词。此外,next()在读取输入后将光标置于同一行。@Edit:&nbsp;nextLine()读取包含单词之间空格的输入(即,它读取到行尾 \n)。读取输入后,nextLine()将光标定位在下一行。要阅读整行,您可以使用nextLine().如果你想使用相同的比请使用这样来消耗换行符&nbsp;Integer.parseIntuserA&nbsp;=&nbsp;Integer.parseInt(scnr.nextInt());

烙印99

原因是换行符(来自输入整数)还没有被消耗。因此,它被scnr.nextLine()下一次循环迭代消耗,因此跳过第二个姓氏输入。要使用换行符,请scnr.nextLine()在扫描整数后立即加 1 。for(int i = 0; i<5; i++) {&nbsp; &nbsp; &nbsp;&nbsp;&nbsp; &nbsp; System.out.print("Please enter last name: ");&nbsp; &nbsp; userL = scnr.nextLine();&nbsp; &nbsp; System.out.println("");&nbsp; &nbsp; System.out.println("Please enter first name: ");&nbsp; &nbsp; userF = scnr.nextLine();&nbsp; &nbsp; System.out.println("Please enter age: ");&nbsp; &nbsp; userA = scnr.nextInt();&nbsp; &nbsp; System.out.println("");&nbsp; &nbsp; scnr.nextLine();&nbsp; &nbsp; pName(userL, userF, userA);}

梦里花落0921

使用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);
随时随地看视频慕课网APP

相关分类

Java
我要回答