Я пытаюсь написать программу, которая запрашивает у пользователя серию положительных значений и вычисляет среднее и стандартное отклонение тех значений, которые имеют входной стоп, когда пользователь вводит -1. Однако, похоже, у меня средняя часть. Я не могу получить стандартное отклонение.Расчет среднего и стандартного отклонения с использованием do while loop
До сих пор это то, что у меня есть.
import java.util.Scanner;
public class HW0402
{
public static void main(String[] args)
{
Scanner input = new Scanner(System.in);
double x;
double sum = 0;
double average = 0;
double dev = 0;
double var = 0;
double sqrx = 0;
int n = 0;
do
{
System.out.println("Enter positive values, enter -1 to end");
x = input.nextInt();
if (x == -1)
{
break;
}
sum += x;
n++;
average = sum/n;
sqrx += Math.pow(x-average,2);
var = sqrx/(n-1);
dev = Math.sqrt(var);
} while (x != -1);
System.out.println("Average: " + average);
System.out.println("Deviation: " + dev);
}
}
я, кажется, чтобы получить странные результаты, такие как десятичные дроби, когда просто вычисление sqrx + = x- среднего
Я новичок в Java и не подался альтернативой к этой проблеме, я хотел бы его, если кто-то указал мне в правильном направлении на то, что я должен был сделать, или объяснить, что я сделал неправильно.
Извините загодя за любые ошибки, которые я совершил.
Ошибка, которую вы делаете, связана с математикой, а не с программированием. Среднее значение вашего набора данных изменяется с каждым новым входом, но каждый раз вы рассчитываете новое среднее значение и добавляете квадрат разницы в 'sqrx'. Это неправильно, потому что каждый раз вы будете использовать другое значение для среднего. Переместите эти операции в _outside_ цикла. Фактически, вы не должны иметь никаких вычислений в своем цикле вообще, потому что вы не выводите результаты. Просто переместите всю математику за пределы цикла, и вы должны получить правильные результаты. – Arc676
Faraz Я действительно не могу действительно ссылаться на связанный ответ, потому что мы еще не покрывали массивы. @ Arc676 для перемещения математики снаружи, где я должен ее перемещать и какие строки я перемещаю, потому что я не могу переместить сумму + = x, не получив неправильного вывода для моего среднего значения. Также для исходного кода мое среднее значение верно, поэтому это означает, что когда вы говорите мои средние изменения, как это влияет на sqrx + = Math.pow (x-average)? – STRAN