在计算列表的奇数平均值时遇到问题

时间:2019-01-21 15:45:39

标签: java file average filewriter

我们的教授在一个文本文件中给了我们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。谢谢

2 个答案:

答案 0 :(得分:2)

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

将其包裹在这样的括号中:

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

答案 1 :(得分:0)

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

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

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