gpt4 book ai didi

java - 带异常处理的 while 循环

转载 作者:行者123 更新时间:2023-11-30 07:13:58 24 4
gpt4 key购买 nike

这是我第一次使用异常处理,所以要温和。我有一个接受 ID 的简单 blob 类,该 id 必须在 30 到 50 之间,否则会抛出异常。

public class Blob {
int id;

public Blob() {

}

public Blob(int id) throws Exception {
this.id = id;
if (id < 30 || id > 50)
throw new Exception ("id = " +id+ ", must be between 30 and 50 inclusive");
}
}

它应该提示用户输入一个 id,如果它不在 30 到 50 之间则抛出异常,并且应该继续直到用户输入有效输入然后简单地显示 id 号。

public class BlobCreator {

public static void main(String[] args) {
int id;
Scanner scan = new Scanner(System.in);
System.out.println("Enter ID number: ");
id = scan.nextInt();

do {
try {
Blob b = new Blob(id);
}

catch (Exception e) {
System.out.println(e);
}
System.out.println("Enter a different ID: ");
id = scan.nextInt();
}
while(true);
}
System.out.println("Blob ID: " +id);
}

我认为我正确地使用了 throw 和 catch,但是我的循环没有正常工作,所以我认为这应该是一个简单的修复,但我不能恰到好处。也正在使用 while 循环,就像我有针对这种情况的最佳方法,或者是否有更好的方法来遍历 throw 和 catch?

感谢所有的帮助

最佳答案

您应该在代码执行成功后放置break;

do {
try {
Blob b = new Blob(id);
break;
}
catch (Exception e) {
System.out.println(e);
}
System.out.println("Enter a different ID: ");
id = scan.nextInt();
} while(true);

因此每次循环到达其主体的末尾时,它都会跳出循环。您只应在 blob 成功创建后中断。虽然我不明白你为什么要放一个breakwhile 循环可以检查输入的内容是否有效并简单地停止循环。

我在 do-while 循环中修改了 while...通过使用 true 循环将永远运行,除非没有异常由构造函数抛出...这使代码更通用(如果修改 blob 构造的条件,则不必修改 while 循环的条件)。

关于java - 带异常处理的 while 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18838647/

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