下面是我的代码。我想出了如何通过复制我以前自己编写的某人的代码来找到平均值的方法。我的代码不起作用的原因如下:
private int[ ] array;
public Arraylab(int[] Val)
{
array = Val;
}
谁能向我解释我的名为 numArray 的数组甚至需要上面的代码。数组名称不在上面的代码中的任何地方,但它是必需的,因此代码可以正常运行。 “数组”一词在我之前编写的“numArray”代码中的位置,尽管它看起来是正确的并且应该起作用,但它不起作用。
class Arraylab {
private int[ ] array;
public Arraylab(int[] Val)
{
array = Val;
}
public double Average()
{
double total = 0;
for (int val : array)
{
total = total + val;
}
return total / array.length;
}
public static void main(String[] args)
{
int[] numArray = {10,6,3,2,6};
Arraylab obj = new Arraylab(numArray);
System.out.println(obj.Average());
}
}
}
答案 0 :(得分:0)
您混淆了面向对象和静态方法调用,这就是您遇到问题的原因。
这一行正在创建您的类 Arraylab obj = new Arraylab(numArray);
的一个新实例,该实例与您的主要方法所在的实例不同,这就是为什么您需要使用 {array
初始化 public Arraylab(int[] Val)
{1}} 方法。
简单的解决方案是使 Average
方法 static
并将您的数组直接传递给它:
class Arraylab {
//We can return the average value from this method if we pass an int[] array into the method
//This method also needs the static keyword so that we can call it directly
public static double Average(int[] array)
{
double total = 0;
for (int val : array)
{
total = total + val;
}
return total / array.length;
}
public static void main(String[] args)
{
//Create the array
int[] numArray = {10,6,3,2,6};
//Pass the numArray into the Average method and store the returned result
double result = Average(numArray);
//Print the result
System.out.println(result);
}
}
答案 1 :(得分:0)
如果您使用的是 java 8 或更高版本,我认为此解决方案最好找到平均值
import java.util.Arrays;
public class Main {
public static void main(String[] args){
Double[] data = {13.0,56.43,-58.2,45.0};
double average = Arrays.stream(data).mapToDouble(sum -> sum).sum() / data.length;
System.out.println(average);
}
}
答案 2 :(得分:0)
流解决方案。如果计算了平均值,则打印它,否则如果未计算,则显示您选择的信息性消息。
int[] numArray = {10,6,3,2,6};
OptionalDouble opd = Arrays.stream(numArray).average();
opd.ifPresentOrElse(System.out::println,
()->System.out.println("Empty Array"));
印刷品
5.4