【问题标题】:Having issues calculating the average of the odd numbers of a list在计算列表奇数的平均值时遇到问题
【发布时间】:2019-01-21 15:45:39
【问题描述】:

我们的教授在一个文本文件中给了我们一个包含 982 个数字的列表,我们已经从文件中读取了文本并打印了一些关于这些数字的信息。到目前为止,我的一切都是正确的(她给了我们正确的答案),除了奇数的总数。我不知道如何获得奇数的平均值,即 48201.56。

我不断得到结果 97354,这很奇怪,因为我使用的方法与我用来求所有数字的平均值和偶数的平均值的方法相同。

        import java.io.*;
        import java.util.*;
        public class Homework1sem2
        {
           public static void main(String args[]) throws IOException
           {
              System.out.println("Student name: Ethan Creveling "
              + "\nEmail: ec904066@wcupa.edu");
              double f = 0;
              double e = 0;
              double d = 0;
              int c = 0;
              int b = 0;
              int a = 0;
              File myFile = new File("numbers.txt");
              Scanner inputFile = new Scanner(myFile);
              while (inputFile.hasNext())
              {
                 int i = inputFile.nextInt();
                 a++;
                 d += i;

                 if(i%2 == 0)
                 {
                    b++;
                    e += i;
                 }
                 else
                    c++;
                    f += i;
              }
              System.out.println("Total number: " + a);
              System.out.println("Total even number: " + b);
              System.out.println("Total odd number: " + c);
              System.out.println("Total average: " + d/a);
              System.out.println("Total even average: " +e/b);
              System.out.println("Total odd average: " + f/c);


           }


        }

我想知道为什么“总奇数平均值”的答案不是 48201.56。谢谢

【问题讨论】:

标签: java file average filewriter


【解决方案1】:

您的else 语句仅执行c++; 操作。

像这样用括号括起来:

else {
  c++;
  f += i;
}

【讨论】:

  • @JoakimDanielson 的“总数”(如c)是指奇数的总出现次数,而不是总和。虽然标签有点混乱。 f 是奇数的总和。因此,f/c 是奇数平均值的正确计算方法。
  • 我删除了我的 cmets,因为正如 @Tom 所指出的那样,我专注于一些次要的事情。对不起。
【解决方案2】:

f += i; 在 else 语句之外执行,这意味着在 while 的每个循环中都会调用它。如果您检查您的值,您应该会发现 f 和 d 是相同的值。

如果您将 else 语句封装如下,这应该可以解决问题

else {
  c++;
  f += i;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-03
    • 2017-01-17
    • 2019-06-13
    • 1970-01-01
    • 2021-03-18
    相关资源
    最近更新 更多