在Java中使用For循环时尝试/捕获问题

时间:2016-10-05 22:08:23

标签: java

我试图从用户那里获得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);
}

3 个答案:

答案 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);
    }
}