The near-complete program is given below.
import java.io.*; import java.util.Scanner; class TestGroups { public static void main ( String[] args ) throws IOException { int value; // the value of the current integer // Prompt for and open the input file Scanner user = new Scanner( System.in ); System.out.print("File name? "); String fileName = user.next().trim(); Scanner scan = new Scanner( new File(fileName) ); // Group "A" int sizeA; // the number of students in group "A" int sumA = 0; // the sum of scores for group "A" sizeA = scan.nextInt(); int count = 0; // initialize count while ( count < sizeA ) { value = scan.nextInt(); sumA = sumA + value ; // add to the sum count = count + 1; // increment the count } if ( sizeA > 0 ) System.out.println( "Group A average: " + ((double) sumA)/sizeA ); else System.out.println( "Group A has no students" ); // Group "B" . . . . more code will go here . . . . } }
The program fragment computes the average for group "A".
The average is computed using double precision floating point,
even though the two quantities involved are both of type int
.
To do this,
a type cast is used to convert sumA
into a double
so
that the division is floating point division, not integer division.
If you were writing this program on your own, what would be a wise thing to do at this point?