如何从给定值获得平均值

时间:2013-03-20 06:32:18

标签: java average

我如何平均?我想要找到GPA,学生总数和GPA总数的平均值。 例如:

输入:     4     4     4     4

输出: 学生总数:4

总GPA :16

平均GPA: 4

import java.util.Scanner;

public class practice {
    public static void main(String[] args) {
        Scanner keyboard = new Scanner(System.in);
        int count = 0;
        double GPA = 0, total = 0, average;

        System.out.println("Enter GPA");

        while (GPA >= 0) {
            GPA = keyboard.nextDouble();
            total = total + GPA;
            count++;
        }

        average = total / count;

        System.out.println("Total students: " + count);
        System.out.println("Total GPA " + total);
        System.out.println("Average GPA " + average);
    }
}

3 个答案:

答案 0 :(得分:7)

如果问题是你得到了错误的答案,原因就是这个循环:

while (GPA >=0)
{
    GPA = keyboard.nextDouble();
    total = total + GPA;
    count++;
}

据推测,当用户输入负数时,您打算退出循环。这有什么不对,它将包括总数和计数中的负数。您可以像这样重写循环:

GPA = keyboard.nextDouble();
while (GPA >=0)
{
    total = total + GPA;
    count++;
    GPA = keyboard.nextDouble();
}

(其他解决方案是可能的)。稍后在您的代码中,您需要防止第一个数字为负数。如果发生这种情况,count将为0,您希望避免除以0并打印无意义的结果。

答案 1 :(得分:0)

您正在循环中获取此行的输入

GPA = keyboard.nextDouble();

问题是,它将获得另一个输入,计数将增加1。 所以你的总数将是5。 你可以用这种方式做到这一点

while (GPA >=0)
{
    GPA = keyboard.nextDouble();
    if (GPA >=0)
    {
       total = total + GPA;
       count++;
    }
    else
       break;
}

答案 2 :(得分:0)

只需在while循环中交换语句的顺序,您的代码就可以正常工作。 在这种情况下,您在键入后将进行检查(是否将i / p添加到总数中)。 因此,当您键入-1时,您将不会进入while循环,并且不会添加最后一个-1的值。

while(GPA> = 0) {

total = total + GPA;
GPA = keyboard.nextDouble();
count++;

}