我想从控制台读取几个东西(长,字符串),但我不知道为什么,例如只是几个第一个输入它工作,然后它不适用于其他人: 下面是我正在谈论的代码,它没有要求地址
10
提前致谢
答案 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();