我试图添加捕捉块到我的程序来处理输入不匹配异常。我将我的第一个设置为在do time循环中工作,以给用户纠正问题的机会。
System.out.print("Enter Customer ID: ");
int custID=0;
do {
try {
custID = input.nextInt();
} catch (InputMismatchException e){
System.out.println("Customer IDs are numbers only");
}
} while (custID<1);
就目前情况而言,如果我试图输入一个字母,它会进入一个无限循环,即“客户标识仅为数字”。
我怎样才能让它正常工作?
为什么不使用扫描仪对象读取它与Scanner.readNextInt()
?
发生的情况是,您捕捉到了不匹配,但仍然需要清除“错误输入”的数字,并重新输入。应该调用next()。编辑:因为您还要求每个do/while的值大于或等于1
boolean valid = false;
while(!valid) {
try {
custID = input.nextInt();
if(custID >= 1) //we won't hit this step if not valid, but then we check to see if positive
valid = true; //yay, both an int, and a positive one too!
}
catch (InputMismatchException e) {
System.out.println("Customer IDs are numbers only");
input.next(); //clear the input
}
}
//code once we have an actual int
请注意,当扫描仪抛出InputMismatchExcture时,扫描仪不会传递导致异常的令牌,因此可以通过其他方法检索或跳过令牌。
为了避免“客户ID仅为数字”的“无限循环”,您需要调用input。next()
,以便可以在控制台中重新输入number
从…起
陈述
catch (InputMismatchException e) {
System.out.println("Customer IDs are numbers only");
到
catch (InputMismatchException e) {
System.out.println("Customer IDs are numbers only");
input.next();
}
测试的示例:
Enter Customer ID: a
Customer IDs are numbers only
b
Customer IDs are numbers only
c
Customer IDs are numbers only
11
我正在开发一个django应用程序,它可以与几个Amazon Web服务进行通信。 到目前为止,我在处理和捕获boto3客户端抛出的异常方面遇到了困难。我正在做的事情似乎不必要地单调乏味: 例子: 如果令牌坏了,这可能会抛出一个。 可能会抛出一个。 首先,我在代码中的任何地方都找不到这些错误,所以它们可能是在某个地方生成的。一句话:我不能像往常一样导入和捕获它。 其次,我发现了一种方法来捕获错误这
我有这个代码,我想捕捉字母异常,但它一直有以下错误: 这是我的代码:
我在用滑翔4。当URL返回404时,获取FileNotFoundException。我尝试使用RequestListener捕捉异常。但它并没有缓存这个异常。 记录如下: 2019-03-20 17:48:07.134 32233-32233/com。zyta。zflikz带滑翔:装载失败https://lh4.googleusercontent.com/-UxjwFuQRjXA/AAAAAAAA
我刚开始使用ANTLR4。我试图为一个简单的程序编写语法规则,但我很难让它工作。 null 任何帮助都很感激!
问题内容: 我希望重复我的代码,直到玩家正确猜出为止。 问题答案: 在此处添加- loop。这意味着您将无限次地循环问题,直到获得满意的结果。
我只是在练习java,目前我正在试验getter/setter方法和构造函数。java程序的工作原理是,我能够将用户输入存储到对象中,但当我将字符串“Dice and rollers”输入到gametype字符串变量中时,会出现一个挂起的未捕获异常InputMismatch错误。 有人能给我解释一下这是为什么吗? 另外,我在下面分享了我的源代码。 上面的是超类,下面的源代码是构造函数和getter