【问题标题】:Averaging numbers in java with arrays not working [duplicate]java中的平均数字与数组不起作用[重复]
【发布时间】:2014-11-09 21:06:35
【问题描述】:

我似乎无法让这段代码正确平均数字。当我输入 5 个 1 位数字(例如 9、6、2 等)时,它会给我不正确的结果,例如输入五个 2,它会给我答案“0.0”。即使输入两位或更多位的数字,它也会错误地将数字四舍五入。就像它甚至不承认它是一个替身一样。我想我错过了一些非常明显的东西,有一段时间没有编程所以不会感到惊讶。

代码如下:

    import java.util.*;

    public class LittleBoxes2
    {
        public static void main (String[] args)
        {
            Scanner input = new Scanner (System.in);
            int[] num;
            double avg;
            String cont = "Y";

            while(cont.equals("Y") || cont.equals("y"))
            {
                num = new int [5];

                for(int i = 1; i <= 5; i++)
                {
                    System.out.println("Enter number " + i + ".");
                    num[i - 1] = input.nextInt();
                }

                avg = num[0] / 5 + num[1] / 5 + num[2] / 5 + num[3] / 5 + num[4] / 5;

                System.out.println("The average number is: " + avg + ".");

                System.out.println("Do you want to continue? (Y/N)");
                input.nextLine();
                cont = input.nextLine();
            }
        }
    }

【问题讨论】:

  • 尝试使用新的 Java 8 Stream API - 最值得注意的IntStream.summaryStatistics
  • avg = num[0] / 5 + num[1] / 5 + num[2] / 5 + num[3] / 5 + num[4] / 5; ... 或者简而言之:avg = (num[0] + num[1] + num[2] + num[3] + num[4]) / 5.0;

标签: java arrays double average


【解决方案1】:

/的两个操作数都是整数时,除法为整数除法。你有:

avg = num[0] / 5 + num[1] / 5 + num[2] / 5 + num[3] / 5 + num[4] / 5;

这意味着,例如,8 / 5 的计算结果为 1,2 / 5 的计算结果为 0。对于您的五个 2 的示例,计算结果为:

= 2 / 5 + 2 / 5 + 2 / 5 + 2 / 5 + 2 / 5
= 0 + 0 + 0 + 0 + 0
= 0

你想要的,例如:

avg = num[0] / 5.0 + num[1] / 5.0 + num[2] / 5.0 + num[3] / 5.0 + num[4] / 5.0;

这样,一个操作数是double,所以num[n]整数操作数被提升为double,除法是浮点除法,结果是double

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-20
    • 1970-01-01
    • 1970-01-01
    • 2016-03-13
    • 1970-01-01
    相关资源
    最近更新 更多