2 回答
TA贡献1862条经验 获得超6个赞
让我们从顶部回顾一下错误。
int arr[] = new int[(int) n];
此时n尚未声明,因此您不能在此处使用它。只需在声明并从扫描仪arr读取后将声明移动到。n顺便考虑int一下n. double真的没有意义。
System.out.println("Mean: " + mean);如果这应该是对方法的调用,则mean需要在方法名称之后加上方括号,并将所需的参数放在方括号中,如mean(arr). mean(arr)仍然无法工作,因为arrhas typeint[]而该方法需要 type double[]。我无法告诉您正确的解决方法是什么,因为我不确定您是要阅读方法外部还是内部的数字。外面对我来说似乎更自然。
System.out.println("Enter" + n + " numbers: ");您不能在n此处使用该变量,因为它是main方法中的局部变量。再说一次,如果您打算在其他地方读取数字并将填充的数组传递给方法,我不确定您是否需要它。
array[i] = input.nextDouble();
这里有两个错误:您没有名为array1. 你的意思可能是numbers,我不确定。而且您不能在input此处使用该变量,因为它是main方法中的局部变量(与上述问题相同n)。要么将其声明为静态字段,要么将其作为参数传递给方法。
方法中的错误deviation类似,不再赘述。
既然我知道这对你来说应该是一个练习,我不会为你解决它并剥夺你的学习机会。我希望你能更进一步。
编辑
您的问题的编辑有一些很好的改进。你似乎还没有决定是读还是读数main字mean?
System.out.println("Mean: " + mean(numbers, n));您的方法中没有numbers声明变量main(下一行中的问题相同)。否则很好。
sum += a[i];
你可能的意思是meanSum和numbers?或者,也许您打算声明sum而不是在循环meanSum之上?for
在上面的行之后缺少一个右花括号来结束第一个for循环。
double dqDiff = 0;
简单的错字:您稍后会引用此变量sqDiff,因此需要在声明中使用相同的拼写。
return Math.sqrt(mean(number, n));
失踪。s_ numbers我不相信这个简单的数学版本是正确的。
请不要指望我在此代码上进行更多轮次。
TA贡献1777条经验 获得超3个赞
我可以建议首先使用 anArrayList而不是 an array[],在这种情况下,您无需指示数字 (n) 的数量,并且可以随意输入任意数量的数字。其次,使用 try-catch 块来停止输入数字和初始化计算。例如:
public class MeanAndDeviation {
public static void main(String[] args) {
Scanner scn = new Scanner(System.in);
System.out.println("Enter the numbers then press any letter to calculate Mean and Sd");
/*Use an ArrayList to freely enter so much numbers as you need*/
ArrayList <Double> arr = new ArrayList <>();
/*Use try-catch block to start calculations by entering any letter*/
try {
while (scn.hasNext()) {
double i = scn.nextDouble();
arr.add(i);
}
}
/*Use catch (Exception e) to catch any type of exceptions*/
catch (Exception e) {}
System.out.println(arr + "\nMean: " + mean(arr) +
"\nStandard Deviation: " + deviation(arr));
}
private static double mean(ArrayList<Double> arr) {
double sum = 0;
for (int i = 0; i < arr.size(); i++) {
sum += arr.get(i);}
double mean = sum/arr.size();
return mean;
}
private static double deviation (ArrayList<Double> arr) {
double sumOfDiff = 0;
for (int i = 0; i < arr.size(); i++) {
sumOfDiff += Math.pow(arr.get(i) - mean(arr), 2);
}
double deviation = Math.sqrt(sumOfDiff/arr.size());
return deviation;
}
}
添加回答
举报
