0

我有一个关于这个问题的作业

编写一个函数 maxArray,它接收一个双精度数组并返回数组中的最大值。使用这个功能

double maxArray(double dar[], int size);

我做了他想做的事,但我在 main 方法中的调用语句有问题!

这是我的代码:

public class Q3 {

    public static void main(String[] args) {
        double dar[] = { 22.5 , 10.23 , 15.04 , 20.77 };
        double max = maxArray(dar,4);
        System.out.println("the largest number is : " + max);
    }

    double maxArray(double dar[], int size) {
        double maxV = 0;
        for (int i = 0; i < dar.length; i++) {
            if (dar[i] > maxV ) {         
                maxV = dar[i];          
            }
        }
        return maxV;
    } 
}
4

6 回答 6

3

你不能调用你的方法的原因是main()你的方法不是。main()static

将其更改为:

static double maxArray(double dar[], int size)

当您使用它时,请删除它,size因为它不是必需的。

可能还值得注意的是,如果数组包含负数,您的方法将失败。

于 2012-12-11T21:52:58.303 回答
1

您的maxArray方法是非静态方法。如果没有类的实例,您无法从静态方法访问非静态方法,您应该创建类的实例并调用 maxArray 方法

double max = new Q3().maxArray(dar,4);

或者,您可以始终将您的 maxArray 方法标记为静态并直接从 main 方法调用它。

于 2012-12-11T21:53:40.030 回答
0

您的问题是您试图从静态的 main 方法调用非静态方法 maxArray。这是一个问题,因为只能从类的实例调用非静态方法,而静态方法是通过类本身调用的。

要么让你的 maxArray 成为一个静态方法,要么在你的 main 方法中初始化一个 Q3 对象,然后像这样调用 maxArray 。

于 2012-12-11T21:57:54.923 回答
0

声明你的maxArrayas static,这样你就可以从静态方法访问它main()

或者

您创建类的实例并从对象中调用它。

于 2012-12-11T21:53:37.730 回答
0

你的方法必须是静态的,所以你必须说

static double maxArray(double dar[], int size)

这里有一些提示你可以如何改进你的方法:因为你没有使用一次值“size”,你可以把它扔掉或者i < dar.lengthi < size.

此外,maxV在 maxArray 方法中进行初始化时,您可能希望使用数组的第一个值 ( double maxV = dar[0]),因为如果数组中的所有双精度数均为负数,则数字 0 的 maxV 将是最高的。(您也可以通过说 来使用可能的最低双精度值double maxV = Double.MIN_NORMAL)。

于 2012-12-11T21:59:24.007 回答
0

1)使你的方法静态
2)记住在java中使用 BigDecimal 类来做任何十进制算术。

于 2012-12-11T22:35:10.273 回答