// Fig. 5.18: DoubleArray.java
// Double-subscripted array example
import java.awt.Graphics;
import java.applet.Applet;
public class DoubleArray extends Applet {
int grades[][] = { { 77, 68, 86, 73 },
{ 96, 87, 89, 81 },
{ 70, 90, 86, 81 } };
int students, exams;
int xPosition, yPosition;
// initialize instance variables
public void init()
{
students = grades.length;
exams = grades[ 0 ].length;
}
// paint the applet
public void paint( Graphics g )
{
xPosition = 25;
yPosition = 25;
g.drawString( "The array is:", xPosition, yPosition );
yPosition += 15;
printArray( g );
xPosition = 25;
yPosition += 30;
g.drawString( "Lowest grade:", xPosition, yPosition );
int min = minimum();
g.drawString( String.valueOf( min ),
xPosition + 110, yPosition );
yPosition += 15;
g.drawString( "Highest grade:", xPosition, yPosition );
int max = maximum();
g.drawString( String.valueOf( max ),
xPosition + 110, yPosition );
yPosition += 15;
for ( int i = 0; i < students; i++ ) {
g.drawString( "Average for student " + i + " is ",
25, yPosition );
double ave = average( grades[ i ] );
g.drawString( String.valueOf( ave ), 195, yPosition );
yPosition += 15;
}
}
// find the minimum grade
public int minimum()
{
int lowGrade = 100;
for ( int i = 0; i < students; i++ )
for ( int j = 0; j < exams; j++ )
if ( grades[ i ][ j ] < lowGrade )
lowGrade = grades[ i ][ j ];
return lowGrade;
}
// find the maximum grade
public int maximum()
{
int highGrade = 0;
for ( int i = 0; i < students; i++ )
for ( int j = 0; j < exams; j++ )
if ( grades[ i ][ j ] > highGrade )
highGrade = grades[ i ][ j ];
return highGrade;
}
// determine the average grade for a particular
// student (or set of grades)
public double average( int setOfGrades[] )
{
int total = 0;
for ( int i = 0; i < setOfGrades.length; i++ )
total += setOfGrades[ i ];
return (double) total / setOfGrades.length;
}
// print the array
public void printArray( Graphics g )
{
xPosition = 95;
for ( int i = 0; i < exams; i++ ) {
g.drawString( "[" + i + "]", xPosition, yPosition );
xPosition += 30;
}
for ( int i = 0; i < students; i++ ) {
xPosition = 25;
yPosition += 15;
g.drawString( "grades[" + i + "]",
xPosition, yPosition );
xPosition = 95;
for ( int j = 0; j < exams; j++ ) {
g.drawString( String.valueOf( grades[ i ][ j ] ),
xPosition, yPosition );
xPosition += 30;
}
}
}
}