【问题标题】:Bar chart of grades using asterisks使用星号的成绩条形图
【发布时间】:2015-02-01 20:09:33
【问题描述】:

我正在尝试制作一个程序,询问用户他们想输入多少个等级。然后,在他们输入成绩后,会打印一个水平条形图,显示有多少成绩落在某个范围内,使用星号(范围是 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 正在存储每个单独的成绩。您可能希望使用它来存储每个范围内的成绩数。
  • 感谢您的回复!我是 Java 新手,所以我不知道该怎么做。可以举个例子吗?

标签: java arrays loops if-statement


【解决方案1】:

希望对你有帮助;

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;
    }

}

【讨论】:

  • 输出的范围不正确。必须对最大值或最小值进行哪些更改才能使其输出范围为 0-9、10-19、20-29、30-39、40-49、50-59、60-69、70 -79, 80-89, 90-99, 100
  • 做 minInterval += 10, maxInterval += 10 可以帮助你。
猜你喜欢
  • 2018-10-30
  • 1970-01-01
  • 2019-03-08
  • 1970-01-01
  • 1970-01-01
  • 2014-12-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多