我一直在寻找答案但是没有太多的运气试图让以下工作。
我目前正在参加一个入门编程课,并且面临一个练习,我需要编写两个函数(即一个返回值的方法)
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()));
}
}
答案 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);
以便将其与当前最大值进行比较。