使用星号的成绩条形图

Bar chart of grades using asterisks

我正在尝试制作一个程序,询问用户他们想要输入多少个成绩。然后,在他们输入成绩后,会打印一个水平条形图,显示有多少成绩落在使用星号的特定范围内(范围是 0-9、10-19、20-29 等到 100)。现在,我的代码接受用户输入,存储输入的成绩并打印指定范围内的值,但这样做不正确(即,如果两个成绩落在 80-89 之间,它将打印 80-89:* 然后 80-89 :* 在它下面与 80-89 相对:**)。最后,除了打印多个 if 语句之外,我想不出更简单的方法来执行此操作。感谢大家的帮助!

public void grades(){
    Scanner in = new Scanner(System.in);
    System.out.println("How many grades would you like to enter? "); //user input how many grades user would like to enter
    int q = in.nextInt();

    double[] grades = new double[q]; //initialized array
    double sum = 0;
    for (int counter = 0; counter < q; counter++){ //user enters # of grades they requested to enter
        System.out.println("Enter your grades: ");
        double grade = in.nextInt();
        grades[counter] = grade; //grade values stored in array
    }
    System.out.println("Bar chart of grades: "); //title of printed list
    for (int i = 0; i < q; i++){ //loop scans grades. Iterate through the grades array with filled values
        if (grades[i] <= 9) { //if grades stored in array fall within range
            System.out.println("0-9: " + '*'); //print those grades on graph
        }
    }
}

希望对你有帮助;

grades() {

    Scanner in = new Scanner(System.in);
    System.out.println("How many grades would you like to enter? "); //user input how many grades user would like to enter
    int q = in.nextInt();

    double[] grades = new double[q]; //initialized array
    double sum = 0;
    for (int counter = 0; counter < q; counter++){ //user enters # of grades they requested to enter
        System.out.println("Enter your grades: ");
        double grade = in.nextInt();
        grades[counter] = grade; //grade values stored in array
    }

    int minInterval = 0;
    int maxInterval = 9;
    // you should loop for each interval
    while (maxInterval < 100) {
        System.out.print(minInterval + "-" + maxInterval + ":"); //print those grades on graph
        // print one asteriks for each grade falls in range
        for (int i = 0; i < q; i++){ //loop scans grades. Iterate through the grades array with filled values
            if (minInterval <= grades[i] && grades[i] <= maxInterval ) { //if grades stored in array fall within range
                System.out.print("*");
            }
        }
        System.out.println();
        minInterval += 9;
        maxInterval += 9;
    }

}