-2

我为家庭作业编写了这个 Java 程序,但它产生了逻辑错误,我完全不知道为什么。这是我的代码:我也不知道为什么 public class StndredDev { 决定将自己从代码块中删除,但即使这样也很容易阅读。第一次发帖,找不到逻辑错误标签。

编辑:问题解决了,我会发布我完成的代码,但这是一个家庭作业,所以它应该被删除吗?我是新来的,所以我不知道发布已完成的家庭作业的政策

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);
    }
}
4

1 回答 1

1
  1. deviation = Math.pow((numbers[m]-=mean),2);- 这条线对我来说没有意义。你想要的是deviation = Math.pow(numbers[m] - mean, 2);我认为这是你提到的错误。

  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);
    

    此外,您似乎假设每个循环都需要一个单独的变量。你没有。两者im都是本地的并且仅独立存在于这些循环中,将它们命名为没有错,i因为它们做同样的事情。

于 2013-10-29T01:57:47.940 回答