gpt4 book ai didi

java - 我的扫描仪的 nextLine() 方法无法处理所有输入,我该如何修复它?

转载 作者:行者123 更新时间:2023-12-02 04:58:04 30 4
gpt4 key购买 nike

我正在尝试编写一个 super 简单的代码,其中给定一个整数,该整数的长度(总位数)在输入控制台后打印出来。我的代码成功打印了除最后一个数字之外的所有数字。我经常遇到这个问题,但无法找到适合我的解决方案。

根据我迄今为止对回答此问题的人的大量研究,我发现通常建议用户添加“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

...而 3051 的位数应该在末尾打印 4。

最佳答案

你的程序按预期工作,但它可以被简化并捕获错误的输入。

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();

但是,对于甚至不是数字的字符串,这不会失败,因此可以捕获这种情况:

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!");
}

还有一种数学方法可以使用模运算符来计算位数。

关于java - 我的扫描仪的 nextLine() 方法无法处理所有输入,我该如何修复它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56401383/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com