Why doesn't my “While Loop” print the computation of finding the average “score”?

后端 未结 5 1037
臣服心动
臣服心动 2021-01-25 19:10

I am writing a program that reads a sequence of positive integers input by the user. User will only enter one integer at a time.Then it will compute the average of those integer

5条回答
  •  天命终不由人
    2021-01-25 19:40

    Explanation

    First of all, when you define data types, you can set their default value in the definition. Ex:

    double sum = 0;
    

    vs

    double sum;
    sum = 0;
    

    Secondly, sum = sum + integer; is the same as: sum += integer;

    Thirdly, count = count + 1; is the same as: count += 1 OR (and better yet), count++;

    As for your actual algorithm, there is one problem and one suggestion:

    1. you are not changing integer's value after each loop. So, you can either do that in the while condition: while ((integer = input.nextInt()) != 0) { or, at the end of each loop:

      while (integer != 0) {
          count ++; 
          sum += integer;
          average = sum / count;
          integer = input.nextInt();
      }
      
    2. This is a suggestion for technically better code (in my opinion), but it looks better, is more intuitive and requires less calculations to calculate the average after the while loop is done instead of during. That way, you only calculate it once, where needed, vs. every loop, which is not needed.

    ________________________________________________________________________________

    The Code (complete class)

    public class AverageOfIntegers {
        public static void main(String[] args) {
            int integer;
            double sum = 0;
            double average = 0;
            Scanner input = new Scanner(System.in);
            int count = 0;
    
            System.out.println("Please enter an integer: ");
    
            // set integer = to the nextInt() while looping so it calculates properly
            while ((integer = input.nextInt()) != 0) {
                count ++; 
                sum += integer;
            }
            average = sum / count; // calculate the average after the while-loop
    
            System.out.println("Average = " + average);
        }
    }
    

    ________________________________________________________________________________

    Example input/output:

    Please enter an integer:

    5

    10

    15

    0

    Average = 10.0

    So it did 5 + 10 + 15 = 30 (which is the sum), and then the average is 30 / 3 (30 is the sum, 3 is the count), and that gave you Average = 10.0.

提交回复
热议问题