我已经为家庭作业编写了这个Java程序,但它产生了逻辑错误,我不确定为什么。这是我的代码: 我也不知道为什么公共类StndredDev {决定从代码块中删除自己,但它很容易阅读甚至如此。 第一次发布,找不到逻辑错误标记。
编辑:问题解决了,我会发布完成的代码,但这是一个家庭作业,所以maby它应该删除?我是新来的,所以我不知道发布已完成的家庭作业的政策
import java.util.Scanner;
public class StndredDev {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
final int numOfDigits=10;
// declare double array
double [] numbers = new double [numOfDigits];
// promt user
System.out.println("Enter ten numbers : ");
double k = 0;
double j = 0;
double deviation = 0;
//Begin computing mean
for (int i=0; i < numOfDigits; i++) {
numbers[i] = input.nextDouble();
k += numbers[i];
}
double mean= k/numOfDigits;
// Display mean
System.out.printf("The mean is %.2f", mean);
//Begin computing standard deviation, I'm at a loss as to why this is still giving me logic errors.
for(int m=0; m < numOfDigits; m++) {
deviation = Math.pow((numbers[m]-=mean),2);
j += deviation;
}
double stndrdDeviation = j/numOfDigits;
double standardDeviation = Math.sqrt(stndrdDeviation);
//Display Standard Deviation
System.out.printf("the standard deviation is: %.6f", standardDeviation);
}
}
答案 0 :(得分:1)
deviation = Math.pow((numbers[m]-=mean),2);
- 这条线对我没有意义。你想要的是deviation = Math.pow(numbers[m] - mean, 2);
我认为这是你提到的错误。
不要定义您不需要的许多变量。重复使用它们。例如,
double stdev = 0;
for(int i = 0; i < numOfDigits; i++){
stdev += Math.pow(numbers[i] - mean, 2);
}
stdev = stdev/numOfDigits;
stdev = Math.sqrt(stdev);
此外,您似乎假设每个循环都需要一个单独的变量。你没有。 i
和m
都是本地的,并且只在这些循环中独立存在,将它们命名为i
都没有错,因为它们做同样的事情。