繁体   English   中英

返回数组中的最大值?

[英]return the maximum value in the array?

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

编写一个函数maxArray,该函数接收一个double数组并返回该数组中的最大值。 使用此功能

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

我做了他想要的,并且在主要方法中的调用句子有问题!

这是我的代码:

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;
    } 
}

无法从main()调用方法的原因是main()static而方法不是。

更改为:

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

在使用时,请删除size因为这是不必要的。

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

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

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

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

将您的maxArray声明为static ,因此可以从静态方法main()

要么

您创建类的实例,然后从对象中调用它。

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

将您的maxArray设为静态方法,或者在main方法中初始化Q3对象,然后像这样调用maxArray。

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

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

以下是一些如何改进方法的提示:由于您一次不使用值“ size”,因此可以将其丢弃,也可以将i < dar.length替换为i < size

此外,在初始化时maxV在maxArray方法,你可能需要使用数组的第一个值( double maxV = dar[0]因为如果阵列中的所有双打是否定的,MAXV编号为0将是最高的。 (您还可以通过说double maxV = Double.MIN_NORMAL使用可能的最低double值)。

1)使您的方法静态
2)请记住,在Java中使用BigDecimal类可以执行任何十进制算术运算。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM