我正在尝试将用户输入存储到一个必须为1-100范围内的数字的数组中。要求我使用try catch进行异常处理,但是我对try catch的经验很少,并且花了很多时间数小时的时间来确定将语句放置在哪里。如果用户输入字母,程序将结束时遇到错误。我希望程序继续直到输入2个有效数字。
public static void main(String []args)
{
Scanner scan = new Scanner(System.in);
System.out.println(“从电影焦点组输入评分:”);
尝试{
double sumFocus = 0;
double[] arrayFocus = new double[2];
for (int i=0; i<2; i++)
{
arrayFocus[i] = scan.nextDouble();
}
for( double num : arrayFocus) {
sumFocus = sumFocus+num;
}
}
catch(InputMismatchException e){
System.out.println("Invalid input");
}
答案 0 :(得分:0)
您的尝试/捕获放置范围太广。您必须将其范围缩小以适合您的循环,因为您希望循环继续进行,直到您拥有两个好的值为止。请考虑以下内容:
double sumFocus = 0;
double[] arrayFocus = new double[2];
for (int i=0; i<2; i++) {
try {
arrayFocus[i] = scan.nextDouble();
}
catch(InputMismatchException e) {
System.out.println("Invalid input: %s", scan.next());
i--;
}
}
for (double num : arrayFocus) {
sumFocus = sumFocus+num;
}