我试图从用户那里获得10个Integer输入。另外,我想在用户输入错误类型的数据(而不是Integer)时处理异常。但是,当使用for循环和放大器时,我遇到了这个问题。尝试/赶在一起。 例如,如果我在第4个数字处输入String。我会得到这个结果:
Type 1. integer: 15
Type 2. integer: 152
Type 3. integer: 992
Type 4. integer: jj
Invalid number
Type 5. integer: Invalid number
Type 6. integer: Invalid number
Type 7. integer: Invalid number
Type 8. integer: Invalid number
Type 9. integer: Invalid number
Type 10. integer: Invalid number
Integers: [15, 152, 992]
我不知道在捕获到异常后如何重新进入循环。
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner input = new Scanner(System.in);
Integer integer;
List<Integer> integerList = new ArrayList<Integer>();
for (int i = 1; i < 11; i ++) {
System.out.print("Type " + i + ". integer: ");
try {
integer = input.nextInt();
integerList.add(integer);
}
catch (InputMismatchException exc) {
System.out.println("Invalid number");
}
}
System.out.println("Integers: " + integerList);
}
答案 0 :(得分:1)
你不要让for循环出现异常。而不是for-loop,我建议使用while循环,例如
applicant
答案 1 :(得分:-1)
或者在异常计数时减少计数器,以便循环不计数。
catch (InputMismatchException exc) {
System.out.println("Invalid number");
i--;
}
答案 2 :(得分:-1)
您必须清除扫描仪输入:
import java.util.Scanner;
import java.util.List;
import java.util.ArrayList;
import java.util.InputMismatchException;
class foo {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner input = new Scanner(System.in);
Integer integer;
List<Integer> integerList = new ArrayList<Integer>();
for (int i = 1; i < 11; i ++) {
System.out.print("Type " + i + ". integer: ");
try {
integer = input.nextInt();
integerList.add(integer);
}
catch (InputMismatchException exc) {
System.out.println("Invalid number");
input.nextLine();
--i;
}
}
System.out.println("Integers: " + integerList);
}
}