Chapter 4 and 5 - Array and Collection

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
Method
Variable 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
Method
Indexed 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

 public class NumberDisplay
 {
 private int limit;
 private int value;
  public NumberDisplay(int rollOverLimit)
 {
     limit = rollOverLimit;
     value = 0;
 }
  public int getValue()
 {
     return value;
 }
  public String getDisplayValue()
 {
     if(value < 10)
          return "0" + value;
     else
          return "" + value;
 }
  public void setValue(int replacementValue)
 {
     if((replacementValue >= 0) && (replacementValue < limit))
          value = replacementValue;
 }
  public void increment()
 {
     value = (value + 1) % limit;
 }
 }

 

Complete definitions for class NRM that a collection of NumberDisplay objects to display nuclear reactor monitoring operations.

Define

Define an array
or ArrayList field
named geiger
that can refer to
NumberDisplay
objects

Array

public class NRM
{

 NumberDisplay geiger [ ];

ArrayList

import java.util.ArrayList;

public class NRM
{

  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 );
         }
}