虽然循环不起作用

时间:2014-09-07 05:27:33

标签: java arrays loops arraylist while-loop

您好我对java很新,并尝试通过在线练习来熟悉它。 我如何正确编码while循环,以便每次用户输入错误时它再次询问相同的问题而不进入下一行代码

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class Array {
    public static void main(String[] args) {
        Scanner dataIn = new Scanner(System.in);
        int entries = 0;
        List<Integer> grade = new ArrayList<Integer>();

        System.out.println("Enter number of students? ");
        entries = dataIn.nextInt();
        boolean checker = true;
        while (checker){
        for (int i = 0; i < entries; i++){

            int input;
            int addToList;
            System.out.println("Enter grade for student: ");
            input = dataIn.nextInt();
            grade.add(input);

            if (input >= 0 && input<= 100) {

            }else {
                System.out.println("invalid input try again..");
                checker = false;
            }
        }
        }

        int sum = 0;
        int count = grade.size();
        double mean;
        for (int grades : grade){
            sum+= grades;
        }
        mean =(double)sum/count;

        System.out.println("The Grades are: " + grade);
        System.out.println("The number of elements in the Array is " + grade.size());
        System.out.println("The average is: " + mean);
    }
}

5 个答案:

答案 0 :(得分:1)

你的逻辑是倒退的。如果输入不正确,您希望循环继续。有两种方法可以解决这个问题:

  1. while(checker)更改为while(!checker)

  2. 打印错误消息后,将checker=false更改为checker=true。并在checker=false分支中设置if

  3. 如果将checker变量的名称更改为更直接读取的内容,则可能会有所帮助。例如,isInputCorrect在您撰写while(!isInputCorrect)时读取得非常好,而且还可以更清楚地表明truefalse的值代表什么。

答案 1 :(得分:1)

试试这个:

boolean checker = true
for(int i=0;i< entries;i++){
    int input;

    System.out.println("Enter grade for student: ");
    input = dataIn.nextInt();
      while(checker){
          if(input >= 0 && input<= 100){
               grade.add(input);
               checker = false;
            }else{
              System.out.println("invalid input try again..");
           }
       }
 checker = true;
 }

答案 2 :(得分:0)

While(checker) 

这意味着当checker为true时,while循环将运行。要阻止它运行,你必须将其设为false。现在看看你的代码,看看我是如何在if条件下做出真假的。

   while (checker){
    for (int i = 0; i < entries; i++){

        int input;
        int addToList;
        System.out.println("Enter grade for student: ");
        input = dataIn.nextInt();
        grade.add(input);

        if (input >= 0 && input<= 100) {
         // answer is right so checker goes to false to exit while loop.
         checker = false;

        }else {
            System.out.println("invalid input try again..");
            // answer is wrong so checker remains true.
            checker = true;
        }
    }

答案 3 :(得分:0)

你可以试试这个

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class Array {
    public static void main(String[] args) {
        Scanner dataIn = new Scanner(System.in);
        int entries = 0;
        List<Integer> grade = new ArrayList<Integer>();
        System.out.println("Enter number of students? ");
        entries = dataIn.nextInt();
        for (int i = 0; i < entries; i++) {
            int input;
            do{
                input = dataIn.nextInt();
                if (input >= 0 && input <= 100) {
                    grade.add(input);
                }else{
                    System.out.println("invalid input try again..");
                }
            }while(!(input >= 0 && input <=100));
        }
        dataIn.close();
        int sum = 0;
        int count = grade.size();
        double mean;
        for (int grades : grade) {
            sum += grades;
        }
        mean = (double) sum / count;
        System.out.println("The Grades are: " + grade);
        System.out.println("The number of elements in the Array is " + grade.size());
        System.out.println("The average is: " + mean);
    }
}

答案 4 :(得分:0)

而不是做(检查员)

为while(运行)创建一个循环 然后将它发送到keyboard.nextInt() 如果它的错误响应比它将循环,如果它正确比设置运行为false 并且具有跟随while循环的代码

相关问题