当前位置: 首页 > 知识库问答 >
问题:

使用星号的成绩条形图

富涛
2023-03-14

我正在尝试制作一个程序,询问用户他们想要输入多少分数。然后,在他们输入成绩后,用星号打印出一个水平条形图,其中有多少成绩落在某个范围内(范围是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
        }
    }
}

共有1个答案

朱硕
2023-03-14

我希望这对你有帮助;

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

}
 类似资料:
  • 问题内容: class upsidedown { 到目前为止,我的代码打印出一个规则的,右侧向上的三角形。我如何使其倒挂? 问题答案: 非常简单地。使用相同的逻辑,只需反转打印行的顺序即可。 另外,请遵循Java命名约定。

  • 问题内容: 我正在尝试使用嵌套的for循环向用户询问整数,然后程序将输出一个倒置的倒置三角形,其底部带有星号,然后逐渐减小。应该看起来像这样: 我有的代码: 输出此: 我不太确定如何更改我的for循环来完成这项工作,并且我已经尝试了一段时间,因此非常感谢您的帮助。 问题答案: 我的看法是这样的: 这是家庭作业吗(嵌套循环是必需的)?提示:可以轻松地将运算符替换为循环。

  • 问题内容: 有什么好方法可以克服不幸的事实,即该代码无法按预期运行: 在理想情况下,所有必填项都将带有一个小星号,表明该字段是必需的。这种解决方案是不可能的,因为CSS插入在元素内容之后,而不是元素本身之后,但是很理想。在具有数千个必填字段的站点上,我可以将星号移动到输入的前面,而只更改一行(到),也可以将其移动到标签的末尾()或标签的前面,或收纳盒上的位置等… 这不仅很重要,不仅以防万一我改变主

  • 克服此代码无法按预期工作这一不幸事实的好方法是: 在一个完美的世界中,所有必需的

  • 问题内容: 我想尝试一个直角三角形的星号。但是我只得到以下 输出:( 我不能在这里放置星号) 我想要的是这样的: 这是我编写的代码: 任何想法分享,我们将不胜感激。我是Java新手。谢谢。 问题答案: 您的代码从不打印任何空格,这应该是一个问题。 您可以使用以下简单方法: 逻辑很简单:您的字符串带有两个空格和三个at符号。输出的第一行必须是两个空格和一个at符号,因此这是字符串的前三个字符。第二行

  • 问题内容: 是否可以在SQL中像下面这样创建一个星形的三角形。我知道可以用任何其他编程语言(如C,C ++,Java)轻松完成此操作,但想知道仅使用SQL还是PL是否真的可能/ SQL。我尝试在Oracle中使用双表对其进行处理,但无法通过它。 如果有人知道,有人可以请大家介绍一下。 问题答案: 最简单的方法就是这样。特别是如果要构建等边三角形而不是直角三角形,则可以变得更加复杂。