Java 计算单数的平均值有问题

Java 计算单数的平均值有问题,java,file,average,filewriter,Java,File,Average,Filewriter,我们的教授给了我们一个文本文件中982个数字的列表,我们从文件中读取了文本,并打印出了一些关于这些数字的信息。到目前为止,我的答案都是正确的,(她给了我们正确的答案),除了奇数的总数。我不知道如何得到奇数的平均值,即48201.56 我一直得到结果97354,这很奇怪,因为我使用的方法与我用来求所有数字平均值和偶数平均值的方法相同 import java.io.*; import java.util.*; public class Homework

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

您的
else
语句只执行了
c++操作

将其用括号括起来,如下所示:

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

您的
else
语句只执行
c++操作

将其用括号括起来,如下所示:

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

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

如果您将else语句封装为以下内容,则应该可以解决问题

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

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

如果您将else语句封装为以下内容,则应该可以解决问题

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

@JoakimDanielson的可能重复“总数”(as
c
)是指奇数出现的总数,而不是总数。虽然标签有点混乱
f
是奇数之和。因此,
f/c
是计算奇数平均值的正确方法。我删除了我的评论,因为正如@Tom所指出的,我关注的是一些次要的东西。抱歉。@JoakimDanielson“总数”(如
c
)指的是奇数出现的总数,而不是总数。虽然标签有点混乱
f
是奇数之和。因此,
f/c
是计算奇数平均值的正确方法。我删除了我的评论,因为正如@Tom所指出的,我关注的是一些次要的东西。很抱歉