The following are similar solutions using single or an array of primitive data or objects.
Single object Array Contains Primitive data: int, char, boolean, double OR object reference Primitive data: int, char, boolean, double OR object reference Define Requires type of data contained char vowel;
NumberDisplay oneGeiger;Requires type of data contained char [] vowels;
NumberDisplay [] geiger;Create Primitive type created but not initialized. oneGeiger = new NumberDisplay( 40 );
Assign an array of variables object vowels = new char[ 5 ];
geiger = new NumberDisplay[ 5 ];Assign Assign primitive data or object vowel = 'z';
oneGeiger = new NumberDisplay( 40 );Indexed array variable on left of = vowels[ 3 ] = 'z';
geiger[ 3 ] = new NumberDisplay( 40 );Access char c = vowel;
NumberDisplay nD = oneGeiger;
Indexed array variable char c = vowels[ 3 ];
NumberDisplay nD = geiger[ 3 ];Invoke
MethodVariable before method. oneGeiger.increment( );
Indexed array variable object before method geiger[ 3 ].increment();
The following are similar solutions using array and ArrayList objects.
Array ArrayList Contains Primitive data: int, char, boolean, double OR object reference Object reference only Define Requires type of data contained char [] vowels;
NumberDisplay [] geiger;Does not since can contain any type of object but not primitive data. ArrayList geiger;
Create Assign an array of variables object vowels = new char[ 5 ];
geiger = new NumberDisplay[ 5 ];Assign an ArrayList object geiger = new ArrayList( );
Assign Indexed array variable on left of = vowels[ 3 ] = 'z';
geiger[ 3 ] = new NumberDisplay( 40 );ArrayList add method geiger.add( new NumberDisplay( 40 ) );
Access Indexed array variable char c = vowels[ 3 ];
NumberDisplay nD = geiger[ 3 ];ArrayList get method result cast to appropriate type NumberDisplay nD = (NumberDisplay) geiger.get( 3 );
Invoke
MethodIndexed array variable object before method geiger[ 3 ].increment();
ArrayList get method result cast to appropriate type before method ( (NumberDisplay) geiger.get( 3 )).increment( );
NumberDisplay from text
|
Complete definitions for class NRM that a collection of NumberDisplay objects to display nuclear reactor monitoring operations.
DefineDefine an array |
Arraypublic class NRM NumberDisplay geiger [ ]; |
ArrayListimport java.util.ArrayList; ArrayList geiger = new ArrayList(); |
| Constructor to refer to NumberDisplays with rollover limit of 40, 30, and 50. |
public NRM() { } |
public NRM() { geiger.add( new NumberDisplay(40) ) ; geiger.add( new NumberDisplay(30) ) ; geiger.add( new NumberDisplay(50) ) ; } |
| Constructor of n NumberDisplays with rollover limit of 40 |
public NRM (int n) { geiger = new NumberDisplay[ n ]; for (int i=0; i < n; i++) geiger[ i ] = new NumberDisplay( 40 ); } |
public NRM(int n) { } |
| Define NMR method Increment that increments all NumberDisplays |
public void Increment ( ) { for( int i=0; i < geiger.size(); i++) ((NumberDisplay) geiger.get( i )).increment(); } |
|
| Define NMR method radiation that returns the total value of all NumberDisplays. Hint: Use getValue() |
public int radiation() { int total = 0; for (int i=0; i < geiger.length; i++) total = total + geiger[ i ].getValue(); return total; } |
|
| Define NMR method IncRandom to increment a random NumberDisplay object |
public void IncRandom() { Random rN = new Random(); geiger[ rM.nextInt( geiger.length ) ].increment(); } |
|
| Define NMR method printAllDisplay to print all values of the NumberDisplays. Hint: Use getDisplayValue() |
} |
public void printAllDisplay() { NumberDisplay nD; for (int i=0; i < geiger.size(); i++ ) { nD = (NumberDisplay).geiger.get( i ); System.out.println( nD.getDisplayValue() ); } } } |
| Define NMR method greatestValue to return the greatest value of a NMR |
public int greatestValue() { int greatest = geiger[ 0 ]; for (int i=0; i < geiger.length; i++) if( geiger[ i ].getValue() > greatest) greatest = geiger[ i ].getValue(); return total; } |
|
| Define NMR method bubbleSortValue to sort geiger by value |
public void bubbleSortValue() { NumberDisplay temp; for(int pass=1; pass < geiger.size(); pass++) for(int j=0; j<geiger.size()-pass; j++) if(((NumberDisplay)geiger.get(j)).getValue() < ((NumberDisplay)geiger.get(j+1)).getValue() ) { temp =(NumberDisplay)geiger.get( j ); geiger.set( j, geiger.get( j+1 )); geiger.set( j+1 , temp ); } } |