坚持使用Java程序来衡量成绩并显示结果

时间:2013-04-11 05:32:15

标签: java find average

我正在学习Java初学者课程,他们要求我们:

  • 编写一个程序,根据用户输入的分数列表计算A,B,C,D和F的数量。

  • 输入所有分数后,程序必须显示a 每个等级编号的水平条形图,如“操作”部分所示。

  • 计数图表必须为每个计算单位显示一个“*”。

  • 当用户输入-1时,程序必须显示最终图形和 退出。

  • 程序的输出必须显示提示和计数图 如上面的操作部分所示。

  • 您可以假设用户只会输入数字。

操作:

程序启动并提示您输入测试分数或结束 程序输入-1。如下所示:

Number of A's: 0
Number of B's: 0
Number of C's: 0
Number of D's: 0
Number of F's: 0
Enter a score (%) or -1 to end: 90

当您输入每个分数时,应用程序会确定分数是否为 一个A,B,C,D或F,并在字母级标签上加一个。像 以下内容:

Number of A's: 1
Number of B's: 0
Number of C's: 0
Number of D's: 0
Number of F's: 0
Enter a score (%) or -1 to end: 95

每次输入分数时,程序都会更新计数。如下所示:

Number of A's: 2
Number of B's: 0
Number of C's: 0
Number of D's: 0
Number of F's: 0
Enter a score (%) or -1 to end: -1

输入分数后,程序会显示水平 A,B,C,D和F的计数条形图。像 以下内容:

A's: **
B's:
C's:
D's:
F's:

规格:

数字等级字母等级

大于或等于90 A

小于90但大于或等于80 B

小于80但大于或等于70℃

小于70但大于或等于60D

小于60华氏度

当程序结束时,显示分数,平均分数和最佳分数。

示例:

得分数:2

平均得分:92.5

最佳得分:95.0

我们还被指示使用至少两种方法进行编码:一种具有空白,另一种返回某种方法。

到目前为止,我只能计算输入的分数,但我似乎无法绕着记录所有输入计算平均值< / em>和选出最佳分数

这是我到目前为止所做的:

    import java.util.*;


    public class ScoreTally {
        public static void main(String[] args) {
             Scanner input = new Scanner(System.in);


            int aCount = 0;
            int bCount = 0;
            int cCount = 0;
            int dCount = 0;
            int fCount = 0;
            int scoreCount = -1;

            double score = 0;



            while (score != -1) {
                if (score >= 90)
                    aCount++;

                else if ((score < 90) && (score >= 80))
                    bCount++;

                 else if ((score < 80) && (score >= 70))
                    cCount++;

                else if ((score < 70) && (score >= 60))
                    dCount++;

                else if ((score < 60) && (score > 0))
                    fCount++;

                System.out.println("Number of A's: " + aCount);
                System.out.println("Number of B's: " + bCount);
                System.out.println("Number of C's: " + cCount);
                System.out.println("Number of D's: " + dCount);
                System.out.println("Number of F's: " + fCount);
                System.out.print("Enter a score (%) or -1 to end: ");
                score = input.nextDouble();

                scoreCount++;

            }

            if (score == -1)
                System.out.println("Number of scores: " + scoreCount);

        }
    }

3 个答案:

答案 0 :(得分:0)

首先,您已经拥有了计算结果的代码。

        int aCount = 0;
        int bCount = 0;
        int cCount = 0;
        int dCount = 0;
        int fCount = 0;
        int scoreCount = -1;

你需要的是另一个能保持总分的领域,即

int totalScore = 0;

您需要在进入while循环之前提示输入第一个分数,否则在第一次迭代时它将无法正常运行。在结束时(或开头),您需要使用该轮的输入更新totalScore,如果输入为-1,则不更新它。

平均分数只是你完成while循环后应计算的totalScore/scoreCount

要获得最高分,您可以为int = maxScore

设置另一个字段

您可以使用

在循环的每次迭代中更新它

maxScore = Math.max(maxScore, score);

Math.max返回两个数字的最大值。

答案 1 :(得分:0)

这很简单。声明2个变量,一个用于avgScore,一个用于程序的开头。

double bestScore = 0.0;
double avgScore = 0.0;
double totalScore = 0.0;
while (score != -1) {
                totalScore = totalScore + score;
                if(score > bestScore)
                    bestScore = score;  
                if (score >= 90)
                    aCount++;

                else if ((score < 90) && (score >= 80))
                    bCount++;

                 else if ((score < 80) && (score >= 70))
                    cCount++;

                else if ((score < 70) && (score >= 60))
                    dCount++;

                else if ((score < 60) && (score > 0))
                    fCount++;

                System.out.println("Number of A's: " + aCount);
                System.out.println("Number of B's: " + bCount);
                System.out.println("Number of C's: " + cCount);
                System.out.println("Number of D's: " + dCount);
                System.out.println("Number of F's: " + fCount);
                System.out.print("Enter a score (%) or -1 to end: ");
                score = input.nextDouble();

                scoreCount++;

            }

            if (score == -1){
                System.out.println("Number of scores: " + scoreCount);
                avgScore = totalScore/scoreCount;
                System.out.println("Best Score: " + bestScore);
                System.out.println("Avg Score: " + avgScore);
            }

同样,为了显示图表,您可以使用最终的标签。

答案 2 :(得分:0)

使用函数返回最大数字以获得最佳分数。 另一个打印最终图形的功能。 这应该照顾两个功能要求。 此外,将循环设置为出口控制循环,因为它必须至少运行一次。

作为编码实践,您不应该使用星型导入(导入java.util。*)而只使用您需要的内容。

此外,在开始时将scoreCount设置为-1也做得很好。

import java.util.Scanner;

public class ScoreTally {

public static void main(String[] args) {
    Scanner input = new Scanner(System.in);


    int aCount = 0;
    int bCount = 0;
    int cCount = 0;
    int dCount = 0;
    int fCount = 0;
    int scoreCount = -1;

    double score;
    double totalScore = 0;
    double bestScore = -1;


    do {
        System.out.println("Number of A's: " + aCount);
        System.out.println("Number of B's: " + bCount);
        System.out.println("Number of C's: " + cCount);
        System.out.println("Number of D's: " + dCount);
        System.out.println("Number of F's: " + fCount);
        System.out.print("Enter a score (%) or -1 to end: ");
        score = input.nextDouble();
        if (score >= 90) {
            aCount++;
        } else if ((score < 90) && (score >= 80)) {
            bCount++;
        } else if ((score < 80) && (score >= 70)) {
            cCount++;
        } else if ((score < 70) && (score >= 60)) {
            dCount++;
        } else if ((score < 60) && (score > 0)) {
            fCount++;
        }
        scoreCount++;
        totalScore = totalScore + score;
        bestScore = greaterNumber(bestScore, score);


    } while (score != -1);

    printGraph('A', aCount);
    printGraph('B', bCount);
    printGraph('C', cCount);
    printGraph('D', dCount);
    printGraph('F', fCount);
    System.out.println("Number of scores: " + scoreCount);
    System.out.println("Average scores: " + totalScore / scoreCount);
    System.out.println("Best scores: " + bestScore);

}

public static void printGraph(char grade, int count) {
    System.out.print("Number of " + grade + "'s: ");
    for (int i = 0; i < count; i++) {
        System.out.print("*");
    }
    System.out.println();
}

public static double greaterNumber(double firstNum, double secondNum) {
    if (firstNum >= secondNum) {
        return firstNum;
    } else {
        return secondNum;
    }
}

}