首页 > 解决方案 > Printf 无法正常工作,不断重复下一行

问题描述

这是我的问题的源代码。 https://pastebin.com/MEwtrxgU .. 在System.out.printf("Enter Birthday in Month/Day/Year: "); bday[z] = console.next();i 行中无法输入生日,因为下一行代码不断插入。

if (choice.equals("s")){
            System.out.println("Enter Login Details");
            System.out.printf("Enter Username: ");
            uname[z] = console.next();
            System.out.printf("Enter Password: ");
            pword[z] = console.next();
            System.out.printf("Enter your Full Name: ");
            name[z] = console.next();
            System.out.printf("Enter Birthday in Month/Day/Year: ");
            bday[z] = console.next();

            System.out.printf("Enter Grade for Programming (2 Units): ");
            subjects[z][0] = consoleDouble.nextDouble();
            System.out.printf("Enter Grade for Computing (3 Units): ");
            subjects[z][1] = consoleDouble.nextDouble();
            System.out.printf("Enter Grade for UTS (3 Units): ");
            subjects[z][2] = consoleDouble.nextDouble();
            System.out.printf("Enter Grade for STS (3 Units): ");
            subjects[z][3] = consoleDouble.nextDouble();
            System.out.printf("Enter Grade for PE (2 Units): ");
            subjects[z][4] = consoleDouble.nextDouble();
            z++;
        }

输出

在此处输入图像描述

标签: javaarrays

解决方案


您在看到错误的行之前输入的问题。如果你想读几个单词,你也必须放几个console.next()。官方文件说:

Scanner 使用分隔符模式将其输入分解为标记,默认情况下匹配空格。
方法 next() 从这个扫描器中查找并返回下一个完整的令牌。一个完整的标记前后是匹配分隔符模式的输入。此方法可能会在等待输入扫描时阻塞,即使先前调用 hasNext() 返回 true。

希望能帮助到你。您可以在 oracle docs 网站上查看更多信息。


推荐阅读