Last Half

Classic programmed-learning exercises, refreshed for modern Java and presented in the current MrStyner.com portfolio style.

Modern Java noteThis archive has been refreshed for Java 25 LTS. Core language concepts remain useful, while outdated setup instructions and browser-era Java are labeled or replaced. Java 26 is the current feature release; Java 25 is used here as the stable teaching baseline.
go to previous page   go to home page   go to next page        

Answer:

Compile and run the program. It is not complete, but it should run correctly with the first half of the data. Always compile and run a program-in-progress as soon as you can. Catch design flaws and bugs as early as you can.

Last Half

The last half of the program is nearly the same as the first, so it is a good idea to check that the first half works before going on. Here is the completed program:

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" 
    int sizeB;     // the number of students in group "B"
    int sumB = 0;   // the sum of scores for group "B"

    sizeB  = scan.nextInt();
    count = 0;      // initialize count

    while ( count < sizeB )
    {
      value = scan.nextInt();
      sumB  = sumB + value ; // add to the sum
      count = count + 1; // increment the count
    }

    if ( sizeB > 0 )
      System.out.println( "Group B average: " + ((double) sumB)/sizeB ); 
    else
      System.out.println( "Group B  has no students" );
  
  }
}

The two halves of the code are very similar.

QUESTION 11:

Is it a mistake to declare the variables sizeB and sumB in the middle of the program?