【问题标题】:How to get average from given values如何从给定值中获取平均值
【发布时间】:2013-03-20 06:32:17
【问题描述】:

我如何平均?我想找到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);
    }
}

【问题讨论】:

  • 有什么问题?出了什么问题?
  • 当显示输出 Total Student 时,它又增加了一个。示例输入为:4 4 4 4 -1。 “-1”是结束循环。输出应为“Total student : 4”,但显示为“5”。

标签: java average


【解决方案1】:

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

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 并打印无意义的结果。

【讨论】:

    【解决方案2】:

    您在这一行的循环中获得输入

    GPA = keyboard.nextDouble();
    

    问题是,它将获得另一个输入,并且计数将增加 1。 所以你的总数是5。 你大概可以这样弄

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

    【讨论】:

    • 为什么是无限循环?当用户输入负数时,它将退出。此外,没有固定数量的学生(也没有必要)。
    • 好的,你没有提到循环以用户负数结束。那么你的问题到底是什么?
    • 好吧,我没有问这个问题。从代码中可以清楚地看出,输入负数时循环结束。 OP 对问题的评论解释了问题。
    • 或者先从代码中取出输入,然后在循环中放 GPA = keyboard.nextDouble();在这些操作之后
    【解决方案3】:

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

    而 (GPA >=0) {

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

    }

    【讨论】:

      猜你喜欢
      • 2021-12-24
      • 2021-09-10
      • 2020-10-01
      • 2021-06-14
      • 2011-02-03
      • 1970-01-01
      • 1970-01-01
      • 2021-09-25
      • 2018-12-30
      相关资源
      最近更新 更多