0

可能重复:
java,程序未停止 scan.nextLine()

    System.out.println("Welcome to the Tuition Calculator Program.");
    System.out.println("How many total credits are you taking?");
    credits = scan.nextInt();

    System.out.println("Are you a Washington resident? y/n");
    resident = scan.nextLine();

    System.out.println("Are you a graduate student? y/n");
    grad = scan.nextLine();

我是 Java 新手,对编程也比较陌生。在使用 jGRASP 的 PC 上。在上面的代码中,我只需要用户输入学分数(int 响应)、居住地(字符串)和毕业状态(字符串)。

它允许用户输入学分,然后将居民问题和研究生问题一起打印。它不会停止并允许用户输入居住问题的答案。(它确实允许我输入我对研究生问题的回答。)

论坛上的其他相关问题没有帮助;我曾尝试添加一个额外的行来吞下任何额外的换行符,但这并没有做到。也许我添加了错误类型的行。该线程很有帮助,但没有提供有效的解决方案。

4

1 回答 1

1

为什么会这样?
如果您尝试打印resident,您会发现它会打印newline字符。实际上这里发生的事情就是这样。在将输入credits作为字符串 ans 后,您按下的输入将被复制到resident变量中。所以你在这里需要的是避免那个换行符。
解决方案
读取creditsusingnextLine()并将其解析为整数 using Integer.parseInt()

 System.out.println("Welcome to the Tuition Calculator Program.");  
    System.out.println("How many total credits are you taking?");  
    credits = Integer.parseInt(scan.nextLine());  
    System.out.println("Are you a Washington resident? y/n");
    resident = scan.nextLine();
    System.out.println("Are you a graduate student? y/n");
    grad = scan.nextLine();
于 2012-07-12T04:21:14.820 回答