![](/img/trans.png)
[英]scanner.nextLine() results in an error when user inputs 1 - 2. How do I allow my program to accept this input as 1?
[英]My scanner's nextLine() method isn't working all inputs, how do I fix it?
我正在尝试编写一个超简单代码,其中给定一个整数,该整数的长度(总数字数)在输入控制台后打印出来。 我的代码正在成功打印所有数字,除了最后一个。 我经常遇到这个问题,无法找到适合我的解决方案。
从我迄今为止对我回答这个问题的很多研究中,我已经看到通常建议用户添加“nextLine()”语句,以便在结尾处跳过/ n字符。每一行,但这并没有完全解决我的问题,我仍然得到最后的运行时错误。
int num = Integer.parseInt(q.next()); // First line of input is # of independent digits that follow, each listed on a line by themselves
q.nextLine();
while(num > 0)
{
System.out.println(q.next().length());
q.nextLine();
num--;
}
我似乎在最后得到一个无限循环,因为程序永远不会停止运行。 上面的代码片段输入:5
200
1
3051
....打印出来:3
1
...虽然最后应该打印4个3051的数字。
那么你的程序按预期工作,但它可以简化并捕获错误的输入。
Scanner s = new Scanner(System.in);
final int numberOfIterations = Integer.parseInt(s.next());
for (int i = 0; i < numberOfIterations; i++) {
System.out.println(s.next().length());
}
s.close();
但是,对于甚至不是数字的String,这不会失败,因此可以捕获这种情况:
Scanner s = new Scanner(System.in);
try {
final int numberOfIterations = Integer.parseInt(s.next());
for (int i = 0; i < numberOfIterations; i++) {
final String input = s.next();
Integer.parseInt(input);
System.out.println(input.length());
}
s.close();
} catch (NumberFormatException e) {
System.out.println("Bad input!");
}
还有使用模运算符计算位数的数学方法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.