Java scan.nextLine()仅等待int用户输入的用户输入;不等待字符串用户输入

时间:2012-07-12 03:03:45

标签: java user-input println

  

可能重复:
  java, programm not stopping for 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响应),驻留(字符串)和毕业生状态(字符串)。

它允许用户输入信用,但然后一起打印常驻问题和研究生问题。它不会停止并允许用户输入居住问题的答案。 (它允许我输入我对研究生问题的回答。)

论坛上的其他相关问题没有帮助;我已经尝试添加一个额外的行来吞下任何额外的换行符,但是还没有完成。也许我添加了错误的线条类型。 This thread很有帮助,但没有提供有效的解决方案。

1 个答案:

答案 0 :(得分:1)

为什么会这样?
如果您尝试打印resident,您会发现它会打印newline字符。 实际上这里发生的是这个。输入credits后输入的输入被作为字符串ans被复制到resident变量。所以你需要的是避免换行符 的解决方案
使用credits阅读nextLine()并使用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();