我试图捕获一个异常并使它重复,但是它只会创建一个无限循环,然后使程序崩溃……为什么这样做呢?我的渔获物有问题吗?
我环顾了网络和stackoverflow,只能找到与我要达到的目标无关的答案。
boolean bError = true;
System.out.println("How many players");
do
{
try
{
PLAYERS = input.nextInt();
if(PLAYERS > 5)
{
System.out.println("maximum of 5");
}//if
else
{
bError = false;
}
}
catch(InputMismatchException e)
{
System.out.println(e);
bError = true;
}
}while(bError && PLAYERS > 5);
如果您输入无效的数字,则会陷入无休止的循环,因为无效的令牌仍留在流中,并且nextInt()
不断尝试以获取它。
您将不得不获得数据流。
您可以做的一件事是nextLine()
改为使用,然后显式尝试将返回的内容解析String
为整数(例如使用Integer.parseInt()
)。
您可以做的另一件事是在异常处理程序中调用input.next()
(或input.nextLine()
)以读取(并丢弃)垃圾输入。如果默认设置不能满足您的要求,则可能需要调整Scanner
定界符才能next()
为您工作。
问题内容: 我一生无法理解为什么我无法在while循环之外阅读postPrioity。我尝试过“ export postPrioity =“ 500””仍然无法正常工作。 有任何想法吗? -或在计划文字中- 输出:(我在files.txt中只有3个文件名) 问题答案: 管道操作员创建一个子外壳,请参阅BashPitfalls和BashFAQ。解决方案:不要使用,反正毫无用处。
问题内容: 在下面的代码中,我希望循环在+ + =时立即退出。但是,使用语句进行测试表明它一直持续到循环完成为止。我尝试过,然后在语句集中进行设置,但这会导致无限循环。我认为使用然后设置可能有效,但也可以一直运行到循环结束为止。什么是最优雅,最快的退出方式?谢谢。 问题答案: 该循环将只匹配条件时,当控制返回到它,即循环完全执行。因此,这就是即使满足条件也不会立即退出程序的原因。 但是,如果条件没
感谢您的建议这是我第一次使用stackoverflow,因为我对编程相当陌生。我遇到的问题是,在执行while循环之后,我的程序没有请求名称。它似乎不在这一行之后执行。System.out.print(“输入减肥者的姓名:”);字符串名称=input.nextLine();有人能解释一下我可能错过了扫描器实用程序的使用吗。
我有这个程序,每次我检查控制台的输入时,根据提供的输入,我决定是继续还是终止程序。 这是第一次,它工作得很好,但在第二次迭代中,我没有发现任何异常。 为什么它在不请求输入参数的情况下抛出异常。 这是控制台输出。
问题内容: 该算法应将3个整数带入ArrayList。如果输入的不是整数,则将出现提示。当我执行代码时,该子句会执行,但是程序会陷入无限循环。有人可以指导我朝正确的方向前进,我感谢您的帮助。:-D 问题答案: 这是因为当使用下一个int读取并且失败时,仍然包含键入的内容。然后,当重新进入do- while循环时,尝试再次使用相同的内容对其进行解析。 您需要使用以下内容“冲洗” 内容: 笔记: 您可
出现的问题是,当用户确实输入了一个正数时,它仍然忽略输入,并要求用户再次输入一个正整数。我想我只是没有正确退出循环,但我不确定是如何退出的。