2016-04-28 4 views
1
package gradeAvg; 
import java.util.Scanner; 
//Grade Average calculater 
public class GradeAvg { 

    public static void main(String[] args) { 
     // TODO Auto-generated method stub 
     Scanner input = new Scanner(System.in); 
     System.out.print("Please Enter the first grade being added to the average:"); 
     double average = input.nextInt(); 
     System.out.print("The average is now: " + average + " Please enter the second grade being averaged:"); 
     average += input.nextInt() ; 
     System.out.print("The average is now: " + average + " Please enter the third grade being averaged:"); 
     average += input.nextInt()/2; 
     System.out.print("The average is now: " + average + " Please enter the fourth grade being averaged:"); 
     average += input.nextInt()/2; 
     System.out.print("The average is now: " + average + " Please enter the fifth grade being averaged:"); 
     average += input.nextInt()/2; 
     input.close(); 
     System.out.print(average); 




    } 

} 

Привет, ребята, я действительно новичок в java и довольно ужасен по математике, я должен делать программу, которая позволяет пользователю вводить значение, усреднить, распечатать его, а затем разрешить ввод другого значения, усреднить его и распечатать и продолжить. Я ошибаюсь, когда я делюсь на 2 в конце каждого ввода или что?Попытка усреднить каждый раз, когда что-то добавляется

ответ

1

Средняя величина - это сумма всех чисел, деленная на число чисел в сумме.

Что вы здесь делаете не среднее. Вы добавляете половину каждого нового номера к общей сумме. Я не то, что вы здесь делаете.

Просто, чтобы сделать вещи более понятно, давайте сделаем sum и counter:

public class GradeAvg { 

    public static void main(String[] args) { 
     int sum; 
     int counter; 
     // ... 
    } 

} 

Каждый раз, когда вы просите номер, вы увеличиваете счетчик и добавить новый номер sum:

int newNumber; 
// ask for input 
newNumber = input.nextInt() 
sum += newNumber; 
counter++; 

Вы можете затем вывести среднее, как это:

System.out.println("The average is: " + (double)sum/counter); 
0

Это неправильно. каждый номер вы добавляете вес 50% против других чисел. вам нужно отслеживать счет (количество элементов) и сумму и каждый раз делиться суммой на количество элементов. поэтому каждый раз, когда вы добавить номер функция должна быть:

(OLD_AVERAGE * OLD_COUNT + NEW_NUMBER)/(OLD_COUNT + 1)

или просто использовать SUM и COUNT и каждый раз, когда СРЕДНЯЯ = SUM/COUNT. вкл. счет на 1 каждый новый номер. inc сумма начисленным числом.

0

полное рабочее решение ... надеюсь, что это помогает ...

public static void main(String[] args) { 
    Scanner input = new Scanner(System.in); 
    double sum = 0; 
    int count = 1; 
    double average = 0; 
    System.out.print("Please Enter the " + count + " grade being added to the average:"); 
    for (; count <= 5;) { 
     sum = sum + input.nextInt(); 
     average = sum/count; 
     System.out.println("The average is now: " + average); 
     count++; 
     if (count <= 5) 
      System.out.println("Please enter the " + count + " grade being averaged:"); 
    } 
    input.close(); 
} 
Смежные вопросы