2016-11-05 2 views
0

Я создаю код, который позволяет пользователю вводить температуру разного типа.Поиск самого большого значения и самого маленького в моем коде в Java

Пользователь должен иметь возможность ввести:

Количество Сколько раз человек измеряет температуру в течение одной недели недели. Температура на каждую неделю.

Когда пользователь напечатал информацию, программа должна показывать температуру, которые были набранные.

Программа должна показать самую низкую температуру каждую неделю. Программа должна показывать самую высокую температуру каждую неделю. Программа должна показывать самую низкую и самую высокую температуру в течение всех недель. Программа должна показывать среднюю температуру каждую неделю и в течение всех недель.

Это, как далеко я пришел:

{ 
    System.out.println ("Temperatures\n"); 


    Scanner in = new Scanner (System.in); 
    in.useLocale (Locale.US); 

    //Here is where information is being put in 
    System.out.print ("amount of weeks: "); 
    int amountOfWeeks = in.nextInt(); 
    System.out.print ("measuring temperature per week: "); 
    int measurementsPerWeek = in.nextInt(); 

    //array to store the information 
    double[][] t = new double[amountOfWeeks + 1][measurementsPerWeek + 1]; 

    //mata in temperaturerna 
    for (int week = 1; week <= amountOfWeeks; week++) 
    { 
     System.out.println ("temperatures - week " + week + ":"); 
     for (int measurement = 1; measurement <= measurementsPerWeek; measurement++) 
      t[week][measurement] = in.nextDouble(); 
    } 
    System.out.println(); 

    //show the temperatures 
    System.out.println ("temperatures"); 
    for (int week = 1; week <= amountOfWeeks; week++) 
    { 
     for (int measurement = 1; measurement <= measurementsPerWeek; measurement++) 
      System.out.print (t[week][measurement] + " "); 

     System.out.println(); 
     } 

    //lowest, highest, the sum of all temperatures, and average temp per week 
    double[] minT = new double[amountOfWeeks + 1]; 
    double[] maxT = new double[amountOfWeeks + 1]; 
    double[] sumT = new double[amountOfWeeks + 1]; 
    double[] averageT = new double[amountOfWeeks]; 

    // write the code to find the lowest temperature for the first week 



    //´Lowest, highest, sum, average for all weeks 
    double minTemp = minT[1]; 
    double maxTemp = maxT[1]; 
    double sumTemp = sumT[1]; 
    double averageTemp = 0; 


} 

}

+0

импорт java.util.*; // Сканер, Locale класса Температуры { \t государственной статической силы основных (String [] агдз) должны быть в начале кода –

+0

Конкретно я просто нужна помощь, чтобы начать работу, как найти минимальную температуру в моей код. –

+0

Вы можете взглянуть на «DoubleSummaryStatistics». – Bubletan

ответ

0

Общий алгоритм, чтобы найти максимальное значение в списке перебрать список и сохранить максимальное значение встречается до сих пор , Например, если у вас есть 10 номеров хранятся в массиве целых чисел:

int max=intArray[0]; 
for (int i=1; i<10;i++) 
     if (intArray[i]>max) 
      max=intArrray[i]; 
0

Put массива в поток и использовать мин() метод [или максимум(), или среднее()] чтобы получить OptionalDouble стоимость.

OptionalDouble minValue = Arrays.stream(myArray).min(); 

Затем, если вы просто хотите, чтобы напечатать его, используйте ifPresent() с лямбда-выражения или ссылки метода:

minValue.ifPresent(e -> System.out.println(e)); 

minValue.ifPresent(System.out::println); 

или если вы хотите сделать что-то еще, вы можете использовать get().

0

Вы можете объявить:

double min = Double.POSITIVE_INFINITY; 
double max = Double.NEGATIVE_INFINITY; 

и всякий раз, когда вы читаете температуру вы проверить, если это новый максимум или мин и при необходимости обновить их так:

... 
t[week][measurement] = in.nextDouble(); 
if (t[week][measurement] < min) min = t[week][measurement]; 
if (t[week][measurement] > max) max = t[week][measurement]; 
... 
0

теперь я рассмотрел ответы размещен здесь и написал это в мой код:

double min = Double.MAX_VALUE; 

for (int week = 1; week<= amountOfWeeks ; week++) 
{ 
    for (int measurement = 1; measurement <= measurementsPerWeek; measurement ++) 
     if (t[week][measurement] < min) 
     min = t[week][measurement]; 

     System.out.println ("min is:" + min); 
    } 

Теперь код проходит через вход данные для всех входов за все недели, и находит минимальное количество и печатает его. Таким образом, в основном, если первая температура на первой неделе равна 1, а пользователь не вводит значение менее 1, мой код будет устанавливать это число как минимум за все недели.

Как я могу изменить это, чтобы он также нашел минимальный ввод для каждой недели для себя?

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