/* program provides a framework for studying simple loop invariants
   the basic problem is to read a sequene of positive values
   and compute their average
*/

package loopInvariants;

import java.util.Scanner;

public class LoopInvariants2 {

   public static void main (String argv[ ]) {
       int count;
       double value;
       double sum;
       Scanner fileIn = new Scanner (System.in);
       
       /* approach 1 */
       System.out.println ( "First Approach");
       sum = 0.0;
       count = 0;
        
       System.out.println ("Enter numbers (conclude with 0)");
       value = fileIn.nextDouble ( );
       
       while (value > 0) {
           sum = sum + value;
           count = count + 1;
           value = fileIn.nextDouble ( );
       }
       System.out.println ("average = " + sum/count);
       
       /* approach 2 */
       System.out.println ("Second Approach");
       sum = 0.0;
       count = 0;
       
       System.out.println ("Enter numbers (conclude with 0)");
       value = fileIn.nextDouble ( );
       
       while (value > 0) {
           value = fileIn.nextDouble ( );
           sum = sum + value;
           count = count + 1;
       }
       System.out.println ("average = " + sum/count);
       
       /* approach 3 */
       System.out.println ("Third Approach");
       sum = 0.0;
       count = 0;
       value = 3.141592;
       
       System.out.println ("Enter numbers (conclude with 0)");
       while (value > 0) {
           value = fileIn.nextDouble ( );
           if (value > 0) {
               sum = sum + value;
               count = count + 1;
           }
       }
       System.out.println ("average = " + sum/count);
       
       /* approach 4 */
       System.out.println ("Fourth Approach");
       sum = 0.0;
       count = 0;
       
       System.out.println ("Enter numbers (conclude with 0)");
       do {
           value = fileIn.nextDouble ( );
           if (value > 0) {
               sum = sum + value;
               count = count + 1;
           }
       }
       while (value > 0);
       
       System.out.println ("average = " + sum/count);
       
       /* approach 5 */
       System.out.println ("Fifth Approach");
       sum = 0.0;
       count = 0;
       
       System.out.println ("Enter numbers (conclude with 0)");
       do {
           value = fileIn.nextDouble ( );
           sum = sum + value;
           count = count + 1;
       }
       while (value > 0);
       System.out.println ("average = " + sum/count);
       
   } // end main

}
