Java 为什么“try/Catch”方法中“try”部分的布尔值是?

Java 为什么“try/Catch”方法中“try”部分的布尔值是?,java,boolean,try-catch,Java,Boolean,Try Catch,我正在使用扫描仪从用户那里获取输入,但我想检查它是否为整数。所以,我发现了。问题是,我不明白为什么在这个解决方案中,done=true在try部分 如果我要在try中输入,如下所示: try { input = sc.nextInt(); done = true; } 如果输入不是int并且进入catch部分,那么如果布尔值已经被更改了,为什么它要重新执行循环,即使它之后没有中断或继续 另外,我本来会用一个新的,像在,但它还没有正式向我解释,所以我不允许使用它 另一件事,只能像在家里一

我正在使用扫描仪从用户那里获取输入,但我想检查它是否为整数。所以,我发现了。问题是,我不明白为什么在这个解决方案中,done=true在try部分

如果我要在try中输入,如下所示:

try {
  input = sc.nextInt();
  done = true;
}
如果输入不是int并且进入catch部分,那么如果布尔值已经被更改了,为什么它要重新执行循环,即使它之后没有中断或继续

另外,我本来会用一个新的,像在,但它还没有正式向我解释,所以我不允许使用它

另一件事,只能像在家里一样做一段时间吗? 在最后一个链接中,为什么会显示scanner.next;在catch和not input=scanner.nextInt;?或者是相同的?

如果输入=sc.nextInt;抛出一个不是int的异常,它将立即跳转到catch。这意味着行done=true;他没有跑。通过将其置于try中,只有当用户输入有效的int时,才会退出循环。

如果input=sc.nextInt;抛出一个不是int的异常,它将立即跳转到catch。这意味着行done=true;他没有跑。通过将其置于try中,只有当用户输入有效的int时,循环才会退出。

如果输入不是int,则进入catch部分

如果用户输入的输入不是int,它将进入catch部分,并且不会设置done=true;因为它已进入catch,所以try-after异常中的以下语句不执行。

如果输入不是int,则进入catch部分


如果用户输入的输入不是int,它将进入catch部分,并且不会设置done=true;因为它已进入catch,所以try-after异常中的以下语句不会执行。

简单:外部循环将重复以请求用户输入,直到done变量指示:现在我们已收到正确的输入

换句话说:当输入不符合预期时,捕获是必需的;但是当达到这一行done=true时,一切都很好;循环可以结束


这就是问题的全部。

简单:外部循环将重复请求用户输入,直到done变量指示:现在我们已收到正确的输入

换句话说:当输入不符合预期时,捕获是必需的;但是当达到这一行done=true时,一切都很好;循环可以结束


这就是全部。

我建议使用Scanner类的hasnetint方法,javadoc:

如果此扫描仪输入中的下一个令牌可以 使用nextInt解释为默认基数中的int值 方法


因此,您可以在if中调用此方法,如果返回true,则可以进一步调用此方法

与其用while编写复杂的逻辑,我建议使用Scanner类的hasNextInt方法javadoc:

如果此扫描仪输入中的下一个令牌可以 使用nextInt解释为默认基数中的int值 方法


因此,您可以在if中调用此方法,如果返回true,则可以进一步调用此方法

请编辑问题,将其限制为特定问题,并提供足够详细的信息,以确定适当的答案。避免一次问多个不同的问题。请编辑该问题,将其限制为特定问题,并提供足够详细的信息,以确定适当的答案。避免一次问多个不同的问题。谢谢你,朋友3谢谢你,朋友3非常感谢不客气。谢谢你的快速投票。我很欣赏那些能迅速向所有给出合理答案的人展示反馈的新手。这是我试图追随自己的一种可能。非常感谢不客气。谢谢你的快速投票。我很欣赏那些能迅速向所有给出合理答案的人展示反馈的新手。这是我试图追随自己的一个可能。好吧,我们还没有看到那个,所以我不被允许使用它。除此之外,我以前从未使用过它,而且我对while的了解比对hasNextInt的了解要多,但仍然感谢您的帮助。乌普沃特罗尼斯:3哦,我们还没有看到那个,所以不允许我使用它。除此之外,我以前从未使用过它,而且我对while的了解比对hasNextInt的了解要多,但仍然感谢您的帮助。乌普沃特罗尼斯:3.
try {
  input = sc.nextInt();
  done = true;
}