Чтение файла number.txt и поиск средних значений

в настоящее время работаю над заданием, и мне нужно прочитать файл чисел и отобразить общее количество чисел, общее количество четных чисел, общее количество нечетных чисел и средние значения всех трех. В настоящее время я изо всех сил пытаюсь найти среднее значение четных и нечетных чисел. Я должен отображать среднее значение четного числа и среднее значение нечетного числа. Я нашел общее среднее значение, используя parseInt для преобразования строки чисел, которую я прочитал, в целые числа, чтобы я мог вычислить среднее значение, но когда я попытался сделать то же самое для четных и нечетных чисел, я не смог заставить его работать

вот мой текущий код:

public class Homework1 {
  public static void main(String[] args) throws IOException {
  // reads file in
  File num = new File("numbers.txt");
  Scanner inputFile = new Scanner(num);
  // creates rounding object
  DecimalFormat rounding = new DecimalFormat("#.##");
  // neccesary variables
  int count = 0;
  double numbers =0;
  int evenNum =0;
  int oddNum =0;
  double avg;
  double evenAvg;
  double oddAvg;
  double sum = 0.0;
  double evenSum = 0.0;
  double oddSum = 0.0;

  // reads in numbers file until last line is read
  while(inputFile.hasNext())
  {
         String nums = inputFile.nextLine();
  // converts string to ints so numbers can be added
         sum += Integer.parseInt(nums);
  // converts string to ints to so odd/even nums can be distinguished
         numbers = Integer.parseInt(nums);
  // updates total number count
         count++;

  // separates evens from odds
  if(numbers % 2 == 0)
      {
         evenNum++;
         evenSum += Integer.parseInt(nums);
      }

      else
         oddNum++;
         evenSum += Integer.parseInt(nums);
   } 

   // calculates total num average
   avg = sum/count; 

  // evenAvg = 
 //  oddAvg =  

   // output of credentials and results

   System.out.println("There are " +count+ " numbers in the file"+"\n");
   System.out.println("There are " +evenNum+ " even numbers"+"\n");
   System.out.println("There are " +oddNum+ " odd numbers"+"\n");
   System.out.println("The total average value is " +rounding.format(avg)+"\n"); 
   System.out.println("The odd number average is " +rounding.format(evenAvg)+"\n");
   System.out.println("The even number average is " +rounding.format(oddAvg)+"\n");

}

Выход:

There are 982 numbers in the file

There are 474 even numbers

There are 508 odd numbers

The total average value is 50362.43

person Anthony Berrios    schedule 07.02.2019    source источник
comment
Каков твой вопрос?   -  person shmosel    schedule 07.02.2019
comment
добавьте скобки вокруг else oddNum++; evenSum += Integer.parseInt(nums);   -  person Scary Wombat    schedule 07.02.2019
comment
В вашем блоке else должны быть фигурные скобки для заключения двух операторов. Кроме того, вы увеличиваете сумму четных чисел в блоке нечетных.   -  person ernest_k    schedule 07.02.2019
comment
вау, хорошо, да, спасибо, ребята, похоже, именно эти две технические проблемы помешали мне получить нужные мне результаты, спасибо за всю вашу помощь @ernest_k   -  person Anthony Berrios    schedule 07.02.2019
comment
только что увидел это, большое спасибо @ScaryWombat   -  person Anthony Berrios    schedule 07.02.2019
comment
раскомментируйте evenAvg = oddSum/oddNum; oddAvg = evenSum/evenNum;, после чего должны появиться ожидаемые результаты.   -  person davedwards    schedule 07.02.2019


Ответы (1)


Хорошо, поэтому я исправил операторы if/else и добавил скобки, и это решило проблему, с которой я столкнулся.

oddNum++;
         oddSum += Integer.parseInt(nums);
person Anthony Berrios    schedule 07.02.2019