我似乎找不到问题。输出是正确的,直到捕获到异常。当我抓住它时,程序会打印:
请给一个整数:无效整数,请重试请
给一个整数:无效整数,请重试…
非常我知道这一定是个愚蠢的错误。
import java.util.InputMismatchException;
import java.util.Scanner;
public class Lab4Exercise1 {
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
boolean caught;
int number=-1;
int counter = 0;
int[] array = new int[5];
do {
caught = false;
System.out.print("Please Give An Integer: ");
try {
number = sc.nextInt();
}catch (InputMismatchException e) {
System.out.println("Not Valid Integer, Please Try Again");
caught = true;
}
if (caught == false) {
counter += 1;
array[counter] = number;
}
}while(counter < 5);
System.out.println("Your input was:");
for(int i = 0; i <= 4; i++) {
System.out.println(array[i]);
}
sc.close();
}
}
要解决这个问题,请添加以下内容
try {
number = sc.nextInt();
}catch (InputMismatchException e) {
System.out.println("Not Valid Integer, Please Try Again");
caught = true;
}finally {
sc.nextLine();
}
原因:根据扫描仪文档:
当扫描器抛出InputMismatchException
时,扫描器不会传递导致异常的令牌,因此可以通过其他方法检索或跳过它。
问题中未提及但可能发生未来错误的问题:
另外,你还有一个问题需要解决,问题就在这里。
if (caught == false) {
counter += 1;
array[counter] = number;
}
实际上,当您在为数组赋值之前增加计数器(初始化为0)时会发生异常,因此最后一个值计数器将为5,并且数组[5]将发生ArrayIndexOutOfBoundsException
(大小5,索引5)
要解决此问题,请将其替换为
if (!caught) {
array[counter++] = number;
}
我目前有一个问题,一个'而'循环不执行。如果输入文本文件有下一行,我将循环条件设置为true。然而,当我执行我的程序时,循环没有运行。我通过添加一个“System.out.println(text)”来确认这一点,正如我所怀疑的,没有产生任何文本。 什么问题导致循环无法执行?
我正在写一份简单的银行申请书。在我的程序中,我使用了while循环。如果用户输入错误,它将再次提示用户输入。 现在的问题是我无法编写任何语句。它总是显示错误(比如:unreachable语句),最终该行不会被打印出来。 我该怎么解决这个问题? [我之所以需要使用,是因为我想打印用户输入的所有信息。] 我正在从事的项目:
我可以打印最大罚款,但我不能打印计数。我看不出max和count之间的区别,也看不出为什么它不让我打印count。感谢任何帮助
我想写一个计算长除法问题总进位的代码。这是我为carries编写的函数。我相信问题在于,第一个while循环并没有一直运行。如果是,为什么?这是在Python 3.5中实现的。
如果我有时运行这些程序,它会在打印“玩家赢”或“玩家输”后继续运行,我可以找到原因。。 这里的输出: 球员滚轴3 2=5 分数是5 玩家滚轮6 4=10 游戏者滚轴6=12 玩家滚轮5 5=10 球员滚轴12=3 球员滚轴1 3=4 球员获胜 球员滚轴4 6=10 球员滚轴4 1=5 构建成功(总时间:0秒)