为了账号安全,请及时绑定邮箱和手机立即绑定

For 循环组合线

For 循环组合线

慕森王 2021-12-30 16:45:17
我正在尝试编写一个 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 回答

?
慕桂英3389331

TA贡献2036条经验 获得超8个赞

请使用nextinsted的的nextLine

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

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

@Edit: nextLine()读取包含单词之间空格的输入(即,它读取到行尾 \n)。读取输入后,nextLine()将光标定位在下一行。

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

如果你想使用相同的比请使用这样来消耗换行符 Integer.parseInt

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


查看完整回答
反对 回复 2021-12-30
?
烙印99

TA贡献1829条经验 获得超13个赞

原因是换行符(来自输入整数)还没有被消耗。因此,它被scnr.nextLine()下一次循环迭代消耗,因此跳过第二个姓氏输入。要使用换行符,请scnr.nextLine()在扫描整数后立即加 1 。


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);

}


查看完整回答
反对 回复 2021-12-30
?
梦里花落0921

TA贡献1772条经验 获得超6个赞

使用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);


查看完整回答
反对 回复 2021-12-30
  • 3 回答
  • 0 关注
  • 147 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信