查找数组的最大值

时间:2013-10-08 17:23:34

标签: java arrays methods

我一直在寻找答案但是没有太多的运气试图让以下工作。

我目前正在参加一个入门编程课,并且面临一个练习,我需要编写两个函数(即一个返回值的方法)

a)返回最大值和
b)中值,来自一系列双值。

以下是我所处的代码。我已经成功创建了一个方法,允许用户输入数组元素的数量并用值初始化它们。但是我很难得到计算最大值的方法。我明确被告知要使用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()));

    }

}

1 个答案:

答案 0 :(得分: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);以便将其与当前最大值进行比较。