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)
仍然无法工作,因为arr
has 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;
}
}
添加回答
举报