【问题标题】:Finding the average of scores求平均分
【发布时间】:2017-04-21 11:24:31
【问题描述】:

我对 java 很陌生,whixh 解释了 loq 质量代码。我正在尝试计算我在代码中输入的分数的平均值,如下所示,但它只得到我在执行其余代码后输入的数字的平均值。我如何使用这行代码找到我之前在代码中输入的分数的平均值:
System.out.printf(“%.2f”, 平均); 为了清楚起见,我想要在我加上星号的行之后输入的数字的平均值。 谢谢

import java.util.Scanner;
public class week4
{
    public static void main(String[] args) {

int n =1;

{
    do{
    n++;
    String studentname;

    int mark;

    Scanner inText = new Scanner(System.in);

    System.out.print("Please enter the name of the student >> ");

    studentname = inText.nextLine();

    Scanner inNumber = new Scanner(System.in);

    *System.out.print("Please enter mark for student " + studentname + " out of 100 >> ");*


    mark = inText.nextInt();

    if(mark <50) System.out.println("The grade for " + studentname + " is F " );

    else if(mark <65) System.out.println("The grade for " + studentname + " is P " );

    else if(mark <75) System.out.println("The grade for " + studentname + " is C " );

    else if(mark <85) System.out.println("The grade for " + studentname + " is D " );

    else System.out.println("The grade for " + studentname + " is HD" );

    } while(n <=3);

    Scanner input = new Scanner(System.in);

                int sum = 0;
                int mark;
                int average;
                int counter = 1;

                while (counter < 2){
                    mark = input.nextInt();
                    sum = sum + mark;
                    counter++;
                    average = sum/3;
                    System.out.printf("The aerage score is " + average  );
                }


        }
    }
}

【问题讨论】:

  • 你的平均值不应该是浮动的吗?
  • 在我们继续之前:您希望将标记存储在mark 变量中,在第一个do-while 循环中读取它们,然后计算平均值,对吗?
  • 系统输入中有很多Scanner。您使用相同的除法器对每个循环进行平均,但条件不匹配,在停止循环之前您只会读取一个值
  • 请正确缩进您的代码。就目前而言,这并不容易阅读。您的 IDE 可以为您完成。

标签: java average


【解决方案1】:

你最后的这个while代码块是不必要的:

                    while (counter < 2){
                    mark = input.nextInt();
                    sum = sum + mark;
                    counter++;
                    average = sum/3;
                    System.out.printf("The average score is " + average  );

您应该添加一个全局变量,例如 total。当用户输入他们的分数时,将每个用户的分数存储在总变量中。用这个替换你的代码(用粗体突出显示更改):

public class week4 {

    public static void main(String[] args) {
        int total = 0;

        int n = 1;

        {
            do {
                n++;
                String studentname;

                int mark;

                Scanner inText = new Scanner(System.in);

                System.out.print("Please enter the name of the student >> ");

                studentname = inText.nextLine();

                Scanner inNumber = new Scanner(System.in);

                //*
                System.out.print("Please enter mark for student " + studentname + " out of 100 >> ");

                mark = inText.nextInt();
                **total += mark;**

                if (mark < 50) {
                    System.out.println("The grade for " + studentname + " is F ");
                } else if (mark < 65) {
                    System.out.println("The grade for " + studentname + " is P ");
                } else if (mark < 75) {
                    System.out.println("The grade for " + studentname + " is C ");
                } else if (mark < 85) {
                    System.out.println("The grade for " + studentname + " is D ");
                } else {
                    System.out.println("The grade for " + studentname + " is HD");
                }

            } while (n <= 3);

            Scanner input = new Scanner(System.in);

            int sum = 0;
            int mark;
            int average;
            int counter = 1;

            **average = total / 3;
            System.out.printf("The aerage score is " + average);**

        }
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-05-17
    • 2022-01-19
    • 2012-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多