/* 9/23/2019 */ import java.util.Scanner; /** Problem: read in and print out a number of test grades */ public class Testgrades { public static void main(String[] args) { int numGrades = 5; Scanner scanner = new Scanner(System.in); String answer; // use a while loop to read in 5 grades int i=1; while (i <= numGrades) { System.out.println("Enter a grade: "); double grade = scanner.nextDouble(); System.out.println("Grade " + i + " " + grade); i++; // counter } System.out.println("Fell out of loop, i is: " + i); // What if pgmer does not know the number of grades? // attempt 1: ask the user how many grades there are System.out.println("How many grades are there? "); numGrades = scanner.nextInt(); i=1; while (i <= numGrades) { System.out.println("Enter a grade: "); double grade = scanner.nextDouble(); System.out.println("Grade " + i + " " + grade); i++; // counter } // attempt 2a: user doesn't know in advance how many grades there are // keep asking user whether there is another grade answer = "yes"; boolean done = false; while (!done) { // process a grade System.out.println("Enter a grade: "); double grade = scanner.nextDouble(); System.out.println("Grade " + grade); // figure out whether the loop should run again System.out.println("Do you have another grade? (yes/no)"); answer = scanner.next(); if (answer.charAt(0)!='y') { done = true; } else ; } // attempt 2b: user doesn't know in advance how many grades there are // keep asking user whether there is another grade // gets rid of boolean variable answer = "yes"; while (answer.charAt(0)=='y' || answer.charAt(0)=='Y') { //to run until user enters an answer that begins with 'n' or 'N' //while(answer.charAt(0)!='n' && answer.charAt(0)!='N') { // process a grade System.out.println("Enter a grade: "); double grade = scanner.nextDouble(); System.out.println("Grade " + grade); // figure out whether the loop should run again System.out.println("Do you have another grade? (yes/no)"); answer = scanner.next(); } // attempt 3: in the case that it is not practical to ask the user, // use a sentinel value (e.g. -1) // and a structured read loop System.out.println("Enter a grade, -1 to finish: "); double grade = scanner.nextDouble(); while(grade!=-1){ System.out.println("Grade " + grade); System.out.println("Enter a grade, -1 to finish: "); grade = scanner.nextDouble(); } // attempt 4: read until end of input // prompt outside System.out.println("Enter a grade, end of input symbol to finish: "); while(scanner.hasNext()){ grade = scanner.nextDouble(); System.out.println("Grade " + grade); System.out.println("Enter a grade, end of input symbol to finish: "); } scanner.close(); } }