扫描仪我java不适用于所有输入

时间:2015-11-28 13:45:40

标签: java java.util.scanner

我想从控制台读取几个东西(长,字符串),但我不知道为什么,例如只是几个第一个输入它工作,然后它不适用于其他人: 下面是我正在谈论的代码,它没有要求地址

10

提前致谢

1 个答案:

答案 0 :(得分:1)

当您致电nextLong()(或nextInt()nextDouble()next() ...)时,您正在阅读令牌扫描仪,但没有在行尾(EOL)令牌中读取,从而使其悬空。然后,当您下次调用nextLine()时,这个悬空的EOL令牌将立即被抢占,因此该调用将无法获得用户的输入,从而弄乱您的程序。要解决此问题,请在获取nextLine()后向nextLong()添加一个额外的调用,忽略返回的任何结果,因为它只是EOL令牌。

所以改变这个:

System.out.print("Number:");
PB.setNumber(keyboard.nextLong());

System.out.println("Do you want to continue(yes/no)");
c1 = keyboard.nextLine();

到此:

System.out.print("Number:");
PB.setNumber(keyboard.nextLong());

keyboard.nextLine():  // **** add this ****

System.out.println("Do you want to continue(yes/no)");
c1 = keyboard.nextLine();