2013-10-08 10 views
0

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

я в настоящее время принимаю вводный курс программирования и столкнулся с упражнением, когда мне нужно написать две функции (то есть метод, который возвращает значение), что

а) Возвращает максимальное значение и
б) Среднее значение, из массива двойных значений.

Ниже приведен код, где я собираюсь. Я успешно создал метод, который позволяет пользователю вводить количество элементов массива и инициализировать их значением. Тем не менее, я испытываю трудности с получением метода вычисления максимального значения. Мне явно сказали использовать метод Math.max. Однако всякий раз, когда я пытаюсь запустить код, я получаю следующее сообщение об ошибке после того, как пользователь инициализирован массив:

"Exception in thread "main" java.lang.Error: Unresolved compilation problem: 
    The method max(double, double) in the type Math is not applicable for the arguments (double, double[])" 

Из того, что я прочитал в API Math.max может обрабатывать двойные типы. Я немного не знаю, как это исправить. У меня есть ощущение, что мне нужно создать цикл, но я был под впечатлением, что цикл foreach эквивалентен.

Все ответы будут оценены.

package com.gc01.lab2; 

import java.util.Scanner; 

public class exercise22 { 

    private static double [] numberInput(){ 
     Scanner input = new Scanner (System.in); 

     System.out.println("How many numbers are in the array?"); 
     int count = input.nextInt(); 
     double [] array = new double [count]; 

     for (int i = 0; i < count; ++i){ 
      System.out.println("Enter number " + i + ": "); 
      array [i] = input.nextDouble(); 
     } 
     return array; 
    } 

    private double maximum (double [] array){ 
     double max = 0.0; 
     for (double value : array){ 
      max = Math.max(0.0, array); 
     } 
     return max; 
    } 

    public static void main(String[] args) { 
     // TODO Auto-generated method stub 
     final exercise22 object = new exercise22(); 
     System.out.println("The maximum number inputted is " + 
       object.maximum(object.numberInput())); 

    } 

} 
+3

Знаете ли вы разницу между 'double' и' double [] '? –

+1

Не проходите в массиве, проходите в двух двухместных. Например, 'max' и' value'. –

ответ

1

В настоящее время вы передаете весь массив только Math.max() вместо значения. Чтобы исправить это, измените max = Math.max(0.0, array); на max = Math.max(0.0, value);.

Кроме того, вы всегда будете сравнивать его с 0.0. Вы должны установить max до 0.0 перед циклом над элементами, а затем сделать max = Math.max(max, value);, чтобы сравнить его с текущим максимумом.

+0

Лучше использовать 'Math.max (max, value)' – Henry

+0

Yep; отредактирован, чтобы это отразить. –

+0

Большое спасибо TF Nelson, это прекрасно и работает безупречно! Я тоже понимаю логику! –

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