2013-11-13 2 views
0

У меня есть две проблемы с моим кодом ниже. Я работаю со средними значениями.Не удалось найти самый высокий средний

Во-первых, я изо всех сил пытаюсь найти, какая неделя имеет самое высокое среднее значение, а затем выводит то, что среднее.

Во-вторых, есть 39 недель в txt-файле, но при запуске моего кода учитывается только 38.

Это мой код до сих пор

import java.util.Scanner; 
import java.io.File; 
import java.io.IOException; 

public class TemperaturesWeek2 { 
    public static void main(String [] args) throws IOException { 
     int count=0; 
     int counts=0; 

     File inputFile = new File ("C:/Users/Phillip/Documents/Temp/temperatures.txt .txt"); 
     Scanner scan = new Scanner(inputFile); 


     while(scan.hasNext()) { 
      count++; 
      scan.nextLine(); 

      String words = scan.next(); 

      double num1 = scan.nextDouble(); 
      double num2 = scan.nextDouble(); 
      double num3 = scan.nextDouble(); 
      double num4 = scan.nextDouble(); 
      double num5 = scan.nextDouble(); 
      double num6 = scan.nextDouble(); 
      double num7 = scan.nextDouble(); 

      double average = (num1 + num2 + num3+ num4+ num5+ num6+ num7)/7; 

      if(average >= 90) { 
       counts++; 
      } 
     } 
     System.out.println("Temperature Statistics:"); 
     System.out.println("Number of weeks: " + count); 
     System.out.println("Weeks with an average temperature of 90 or above: " + counts); 
     System.out.println("Highest average weekly temperature:"); 
    } 
} 
+0

У вас есть дополнительная конечная скобка здесь вам не нужно 'if (average> = 90) {counts ++; } } ' –

ответ

2

Вы, кажется, чтобы пропустить первую строку файла, так как вы называете scan.nextLine(); перед чтением различных двойников.

Простое решение выяснить, какие неделе самый высокий средний бы добавить еще две переменные в коде, например:

int highestWeek = 0; 
double highestAverage = 0; 

и затем хранить нужные значения в цикле во время использования, если (есть много способов решить, что такое max, вы можете использовать класс Math или, возможно, хранить все в массиве, если хотите позже обрабатывать данные). Для справки:

if (average>highestAverage) 
{ 
     highestAverage=average; 
     highestWeek=count; 
} 

ПРИМЕЧАНИЕ. Это будет игнорировать случай, когда несколько недель имеют самый высокий средний показатель.

+0

как бы вы это сделали, используя математический класс, потому что я пытался Math.max (,), но не знаю, какие значения ввести? – user2985542

+0

Вам нужно будет сделать что-то вроде highAverage = Math.max (highAverage, average); (http://docs.oracle.com/javase/7/docs/api/java/lang/Math.html#max(double, double)) –

+0

, который работал недолго – user2985542

Смежные вопросы