【发布时间】:2019-11-27 18:37:14
【问题描述】:
使用双浮点数据计算任何给定输入的计数、平均值和标准差。
每次我运行程序时,它都会给出我的计数和平均值,但是我的标准偏差显示为 NaN。
import java.util.Scanner;
public class Final
{
public static void main (String[]args)
{
Scanner in = new Scanner(System.in);
System.out.print("Enter a range of digits to recieive 1. Count , 2. Average , 3. StdDvn");
double input = in.nextDouble();
double count = 1;
double sum = 0;
double sumsquared = sum * sum;
double std = 0;
while (in.hasNextDouble())
{ double value = in.nextDouble();
sum = input += value;
count++;
}
double average = sum / count;
std = Math.sqrt((sumsquared-(sum/count)) / (count - 1));
System.out.println("Your count of numbers is : " + count);
System.out.println("Your average of numbers is : " + average);
System.out.println("Your standard deviation of numbers is : " + std);
}
}
【问题讨论】:
-
每次我运行程序时,它都会给我计数和平均值,但是我的标准偏差显示为 NaN :/
-
使用edit按钮添加更多信息,不要使用cmets。
-
将
sumsquared = sum * sum;移到 while 循环下方。 -
谢谢。我输入 1,2,3,4,5,6 并且我得到 9.4 的标准偏差输出。我想应该是1.8。伙计们,我在哪里出错了stndrd偏差公式??
-
s.d.的常用计算方法。涉及首先找到平均值,然后计算每个项目与平均值的差异的平方和,这需要第二次迭代项目。在不重新访问每个输入的情况下计算标准偏差是困难的,但并非不可能。这样一个"online algorithm" exists to have only one pass,但对于普通程序员来说,实现它可能有点矫枉过正。你能用
List吗?