gpt4 book ai didi

java - 在java中传递数组来获取平均中位数和众数

转载 作者:行者123 更新时间:2023-12-01 21:43:31 26 4
gpt4 key购买 nike

我正在尝试使用java传递一个数组来获取java中的平均值、中位数、众数、最大值和最小值。我目前遇到一个问题,将数组传递给函数并返回其值,以便我可以输出结果。我相信我有正确的循环来解决平均中位数和众数,但我无法让它们按需要发送和接收。如何传递数组并发回所需的值?

更新:我已经更新了它将编译的代码,我可以输入年数,但此后我收到了几个错误。它也不打印输出

线程“main”中出现异常 java.util.UnknownFormatConversionException: Conversion = 'i' 在 java.util.Formatter$FormatSpecifier.conversion(Formatter.java:2646) 在 java.util.Formatter$FormatSpecifier.(Formatter.java:2675) 在 java.util.Formatter.parse(Formatter.java:2528) 在 java.util.Formatter.format(Formatter.java:2469) 在 java.io.PrintStream.format(PrintStream.java:970) 在 java.io.PrintStream.printf(PrintStream.java:871) 在 la5cs1110_woodspl_03.pkg17.pkg2016.La5cs1110_WoodsPl_03172016.main(La5cs1110_WoodsPl_03172016.java:56)Java 结果:1

    public static void main(String[] args) {
int i;
List<Double> hArray = new ArrayList<>();
int nYears = 0, y = 0;
double rMax = 0.00,rMin = 100.00;


//get input check if between 1-80
while(y == 0){
String userData = JOptionPane.showInputDialog
("Enter number of years");
nYears = Integer.parseInt(userData);

if (nYears > 1 && nYears <= 80 )
y = 1;

}


y = 0;
while(y <= nYears){
for(i = 0; i < 12; i++){
Random rand = new Random();
double rNum = rand.nextFloat() * (rMax - rMin) + rMin;
hArray.add(rNum);
}
double mean = getMean (hArray);
double median = getMedian (hArray);
double mode = getMode (hArray);
double max = getMaxValue(hArray);
double min = getMinValue (hArray);
System.out.printf("In year %i the Mean = %d , mode = %d, median = %d," +
" max = %d, min = %d", y , mean, median, mode, max, min);
y++;
}

}
private static double getMean(List<Double> hArray) {
double sum = 0;
for (int i = 0; i < hArray.size(); i++) {
sum += hArray.get(i);
}
return sum / hArray.size();
}
//Median
private static double getMedian(List<Double> hArray) {
int middle = hArray.size()/2;
if (hArray.size() %2 == 1) {
return hArray.get(middle);
} else {
return (hArray.get(middle-1) + hArray.get(middle)) / 2.0;
}
}
//Mode
public static double getMode(List<Double> hArray) {
double maxValue = 0, maxCount = 0;

for (int i = 0; i < hArray.size(); ++i) {
int count = 0;
for (int j = 0; j < hArray.size(); ++j) {
if (hArray.get(j) == hArray.get(i)) ++count;
}
if (count > maxCount) {
maxCount = count;
maxValue = hArray.get(i);
}
}

return maxValue;
}
public static double getMaxValue(List<Double> hArray){
double maxValue = hArray.get(0);
for(int i=1;i < hArray.size();i++){
if(hArray.get(i) > maxValue){
maxValue = hArray.get(i);

}

}
return maxValue;
}
public static double getMinValue(List<Double> hArray){
double minValue = hArray.get(0);
for(int i=1;i<hArray.size();i++){
if(hArray.get(i) < minValue){
minValue = hArray.get(i);
}
}
return minValue;
}


}

最佳答案

您的hArray是一个列表。您应该先将其转换为数组。

getMean(hArray.toArray)

查看this .

关于java - 在java中传递数组来获取平均中位数和众数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36192197/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com