我目前正在处理Eclipse中的一些Java代码,并试图在do-time语句中使用try捕获语句。我目前的代码如下:
import java.util.Scanner;
import java.util.InputMismatchException;
import java.util.Random;
public class GG_HighLowInvalid{
public static void main(String[] args){
Scanner cg = new Scanner(System.in);
//Assign and define variables
int guess, rand;
guess = 0;
rand = 10;
//Create loop
do
try{
guess = 0;
//Ask for a guess
System.out.print("Enter your guess: ");
//Record the guess
guess = cg.nextInt();
}
catch(InputMismatchException exception){
System.out.println("Your guess must be an integer.");
}
while (guess != rand);
}
}
当我输入任何数字时,代码工作正常,并将循环请求另一个输入,当输入10时,代码按预期停止(因为猜测值等于rand)。但是,如果我输入任何非整数的内容(例如“否”),则会出现一个无限循环,其中输出打印以下内容:
"你的猜测必须是整数"
“输入您的猜测:您的猜测必须是整数。”
“输入您的猜测:您的猜测必须是整数。”
“输入您的猜测:您的猜测必须是整数。”
永远重复,直到程序从外部终止。
既然while语句是(guess!=rand),为什么非整数会导致这个无限循环?try语句下的手动输入不应该再次调用吗?如有任何帮助,我们将不胜感激。另外,我对Java还很陌生,如果我遇到一些简单的问题,请提前道歉。
你不需要使用try catch语句。您只需使用对象扫描仪的hasNextInt()方法检查它是否是整数。这是一个例子,它将解决您的问题:
public static void main(String[] args) {
Scanner cg = new Scanner(System.in);
boolean valid = false;
//Assign and define variables
int guess, rand;
guess = 0;
rand = 10;
//Create loop
do{
System.out.println("Enter your guess: ");
if(cg.hasNextInt()){
guess = cg.nextInt();
valid = true;
}else{
System.out.println("Your guess must be an integer.");
cg.next();
}
}while (!valid || guess != rand);
}
使用以下代码:
catch(InputMismatchException exception){
cg.next();
System.out.println("Your guess must be an integer.");
}
在您读取缓冲区失败后,它的值不会被清空,下一次当它到达cg时。nextInt()
它试图读取相同的错误的值,您进入了循环。您需要“清空缓冲区”,所以下次它将读取正确的值。
当扫描器抛出一个InputMismatchException
时,扫描器将不会传递导致异常的令牌,因此可以通过其他方法检索或跳过该令牌。
当前,您的扫描仪
没有向前移动以读取下一个输入,而是连续读取相同的输入。您必须显式调用一些方法,这些方法可以读取这个不正确的值,而这是不期望的。例如,扫描仪。next()
调用catch
块可以避免这个无限循环。
通常都听到别人说,计算机很牛逼,很聪明,其实计算机一点都不聪明,光是你要跟他沟通,都会气 shi 你,聪明的是在写程序的你。 写程序就是跟计算机沟通,告诉它要做什么。 竟然是这样,那么肯定缺少不了一些沟通逻辑。比如你要告诉计算机在什么情况下做什么?或者在哪个时间点做什么? 这都需要用到逻辑判断。这一章节,主要就是说这个。 目录
1、什么是循环语句 一般编程语言都有循环语句,为什么呢? 那就问一下自己,我们弄程序是为了干什么? 那肯定是为了方便我们工作,优化我们的工作效率啊。 而计算机和人类不同,计算机不怕苦也不怕累,也不需要休息,可以一直做。 你要知道,计算机最擅长就是做重复的事情。 所以这时候需要用到循环语句,循环语句允许我们执行一个语句或语句组多次。 循环语句的一般形式如下: 在 Python 提供了 for 循环和
while 循环:while 条件 do … end repeat 循环:repeat … until 条件 for 循环:for 变量 = 初值,终点值,步进 do … end for 循环:for 变量 1,变量 2,… ,变量 N in表或枚举函数 do … end while 循环 my_table = {1,2,3} local index = 1 -- 注意: table 中的索引从
循环语句的作用是反复的执行同一段代码,尽管分几种不同的类型,但其原理几乎相同;只要给定的条件满足,包含在循环体内的语句会不断执行,一旦条件不再满足则终止。 while循环是前测试循环,这意味着是否终止的条件判断是在执行代码之前,因此,循环的主体可能根本不执行。其语法如下: while(expression) statement 当expression为ture时,程序会不断执行statement语
在不少实际问题中有许多具有规律性的重复操作,因此在程序中就需要重复执行某些语句。 以下为大多编程语言循环程序的流程图: Go 语言提供了以下几种类型循环处理语句: 循环类型 描述 for 循环 重复执行语句块 循环嵌套 在 for 循环中嵌套一个或多个 for 循环 循环控制语句 循环控制语句可以控制循环体内语句的执行过程。 GO 语言支持以下几种循环控制语句: 控制语句 描述 break 语句
我正在开发一个简单的python程序,其中包括创建一个圆圈“按钮”,然后让用户在圆圈内单击。如果他们没有点击圆圈,会出现一条消息,说明他们在圆圈外点击,应该再试一次。然而,在最后一部分,我得到了一个关于代码的无休止的循环,尽管使用了中断。是否有任何人可以帮助查看是否存在错误?谢谢