0

该程序显示一个问题,用户输入数字 1 到 5。5 个用户的 5 个问题。但是,只要它是一个 Int,程序就不会识别一个好的输入或一个坏的输入。我必须输入很多次才能再次运行 Survey.presentQuestions() 。我不知道为什么。

    for (int i = 0; i < 5; i++) 
            {
                for (int j = 0; j < 5; j++) 
                {
                    Survey.presentQuestion(j, i);
                    do{
                        TempAns = in.nextInt();
                        while (!(in.hasNextInt()))
                        {
                            System.out.println("Please enter integer value from 1 to 5!");
                            in.next();
                        }
                    }while(TempAns >= 1 && TempAns <= 5);
                    Survey.ResultArray[i][j] = TempAns;

                }
            }
4

2 回答 2

1

更新试试这个

 for (int i = 0; i < 5; i++) {
    for (int i = 0; i < 5; i++) {
        for (int j = 0; j < 5; j++) {
            System.out.println("Student: "+(i+1)+" Grade: "+(j+1));
            System.out.println("Please enter integer value from 1 to 5!");
            TempAns = getNumber();
        }
    }

还有这个其他方法

 public int getNumber(){
    Scanner in =new Scanner(System.in);
    int validatedNumber;
    do{


    try{
        String toValidate=in.next();
        validatedNumber= Integer.parseInt(toValidate);
        if (validatedNumber>0 && validatedNumber<6){
            return validatedNumber;
        }else{
            System.out.println("Between 1 and 5!!");
        }
    }catch(Exception e){
        System.out.println("You have to chose a number!");
    }
    }while(true);

}
于 2015-10-06T01:06:01.477 回答
0

我假设您希望用户输入一个整数 1-5 并继续下一个问题?如果是这样,试试这个:

代替:

                    do{
                        TempAns = in.nextInt();
                        while (!(in.hasNextInt()))
                        {
                            System.out.println("Please enter integer value from 1 to 5!");
                            in.next();
                        }
                    }while(TempAns >= 1 && TempAns <= 5);

和:

while (true) {
            TempAns = in.nextInt();
            if (TempAns >= 1 && TempAns <= 5)
                return;
            else
                System.out.println("Please enter integer value from 1 to 5!");
        }
于 2015-10-06T01:05:54.593 回答