If you are using Java 5.0 (1.5) or above rewrite the Student class to use generics with ArrayList and List.

What will be an ideal response?

```
mport j a v a . i o . ? ;
import j a v a . u t i l . ? ;
/? ?
? C l a s s t h a t d e s c r i b e s a s t u d e n t . A s t u d e n t has a name and an
? l i s t o f g r a d e s . You can g e t i n f o r m a t i o n a b o u t a s t u d e n t
? such as h e r / h i s name and g r a d e a v e r a g e . A s t u d e n t may
? a l s o have a p i c t u r e .
?
? @author Barb E r i c s o n
?/
public c l a s s Student
{
// ////////// f i e l d s //////////////////
/? ? t h e name o f t h e s t u d e n t : f i r s t l a s t ?/
private S t r i n g name ;
/? ? a l i s t o f g r a d e s f o r t h i s s t u d e n t ?/
private L i s t g r a d e L i s t ;
/? ? a p i c t u r e o f t h i s s t u d e n t ?/
private P i c t u r e p i c t u r e ;
// ////////// c o n s t r u c t o r s ///////////
/? ?
? No argument c o n s t r u c t o r . Leave s
? a l l f i e l d s with d e f a u l t values
?/
public Student ( ) {}
/? ?
? C o n s t r u c t o r t h a t t a k e s t h e name
? @param theName t h e s t u d e n t ’ s name
?/
public Student ( S t r i n g theName )
{
t h i s . name = theName ;
}
/? ?
? C o n s t r u c t o r t h a t t a k e s a name and
? t h e number o f g r a d e s
? @param theName t h e s t u d e n t ’ s name
? @param numGrades t h e number o f g r a d e s
?/
public Student ( S t r i n g theName , i n t numGrades )
{
t h i s . name = name ;
t h i s . g r a d e L i s t = new A r r a y L i s t ( numGrades ) ;
}
/? ?
? C o n s t r u c t o r t h a t t a k e s t h e name
? and a l i s t o f g r a d e s
? @param theName t h e s t u d e n t ’ s name
? @param t h e G r a d e L i s t t h e l i s t o f g r a d e s
?/
public Student ( S t r i n g theName ,
L i s t t h e G r a d e L i s t )
{
t h i s . name = theName ;
this . gradeList = theGradeList ;
}
/? ?
? Constructor that takes a delimited string , the
? name d e l i m i t e r , and t h e g r a d e d e l i m i t e r .It f i l l s
? i n t h e f i e l d s from t h e d e l i m i t e d s t r i n g .
? @param d e l i m S t r i n g s t u d e n t i n f o r m a t i o n as a
? delimited string
? @param nameDelim what d e l i m i t s t h e name f i e l d
? from t h e g r a d e s
? @param gradeDelim what d e l i m i t s t h e g r a d e s
?/
public Student ( S t r i n g d e l i m S t r i n g ,
S t r i n g nameDelim ,
S t r i n g gradeDelim )
{
// c r e a t e t h e l i s t f o r t h e g r a d e s , i f needed
i f ( t h i s . g r a d e L i s t == null )
t h i s . g r a d e L i s t = new A r r a y L i s t ( ) ;
// s p l i t s t r i n g b a s e d on name d e l i m i t e r
S t r i n g [ ] s p l i t A r r a y = d e l i m S t r i n g . s p l i t ( nameDelim ) ;
t h i s . name = s p l i t A r r a y [ 0 ] . t r i m ( ) ;
// g e t t h e g r a d e s t r i n g and b r e a k i t and c o n v e r t t o d o u b l e
String grades = splitArray [ 1 ] ;
S t r i n g [ ] g r a d e S t r A r r a y = null ;
i f ( g r a d e s != null )
{
g r a d e S t r A r r a y = g r a d e s . s p l i t ( gradeDelim ) ;
f o r ( i nt i = 0 ; i < g r a d e S t r A r r a y . l e n g t h ; i ++)
{
t h i s . g r a d e L i s t . add (
Double . p a r s e D o u b l e ( g r a d e S t r A r r a y [ i ] ) ) ;
}
}
}
// ///////// methods ///////////////
/? ?
? Method t o g e t t h e p i c t u r e f o r t h i s
? student
? @return t h e p i c t u r e (may be n u l l )
?/
public P i c t u r e g e t P i c t u r e ( )
{ return t h i s . p i c t u r e ; }
/? ?
? Method t o s e t t h e p i c t u r e f o r t h i s
? student
? @param t h e P i c t u r e t h e p i c t u r e t o u s e
?/
public void s e t P i c t u r e ( P i c t u r e t h e P i c t u r e )
{
this . p i c t u r e = thePicture ;
}
/? ?
? Method t o show t h i s s t u d e n t
? It w i l l display the picture i f there
? i s one e l s e j u s t p r i n t t h e s t u d e n t name
?/
public void show ( )
{
i f ( t h i s . p i c t u r e == null )
{
// u s e t o S t r i n g
System . out . p r i n t l n ( t h i s ) ;
}
else
{
t h i s . p i c t u r e . show ( ) ;
}
}
/? ?
? Method t o r e t u r n t h e name o f t h i s s t u d e n t
? @return t h e s t u d e n t ’ s name
?/
public S t r i n g getName ( ) { return t h i s . name ; }
/? ?
? Method t o s e t t h e name f o r t h i s s t u d e n t
? @param theName t h e new name t o u s e
? @return t r u e i f s u c c e s s e l s e f a l s e
?/
public boolean setName ( S t r i n g theName )
{
boolean r e s u l t = f a l s e ;
i f ( t h i s . name == null )
{
t h i s . name = theName ;
r e s u l t = true ;
}
return r e s u l t ;
}
/? ?
? Method t o g e t t h e g r a d e i n t h e g r a d e l i s t
? at the passed index
? @param i n d e x t h e i n d e x t h a t we want t h e g r a d e f o r
? @return t h e g r a d e i n t h e g r a d e l i s t a t t h i s p a s s e d i n d e x
?/
public double getGrade ( in t i n d e x )
{
return t h i s . g r a d e L i s t . g e t ( i n d e x ) ;
}
/? ?
? Method t o r e p l a c e t h e l i s t o f g r a d e s
? @param t h e A r r a y t h e new l i s t o f g r a d e s t o u s e
? @return t r u e i f s u c e s s , e l s e f a l s e
?/
public boolean setGradeArray ( L i s t t h e L i s t )
{
boolean r e s u l t = f a l s e ;
// o n l y s e t t h e g r a d e L i s t i f
i f ( t h i s . g r a d e L i s t == null )
{
this . gradeList = t h e L i s t ;
r e s u l t = true ;
}
return r e s u l t ;
}
/? ?
? Method t o s e t a g r a d e a t an i n d e x
? @param i n d e x t h e i n d e x t o s e t i t a t
? @param newGrade t h e g r a d e t o u s e
? @return t r u e i f s u c c e s s e l s e f a l s e
?/
public boolean s e t G r a d e ( in t index ,
double newGrade )
{
boolean r e s u l t = f a l s e ;
i f ( newGrade >= 0 | |
t h i s . g r a d e L i s t != null | |
index < this . gradeList . s i z e ( ) | |
i n d e x >= 0 ) {
t h i s . g r a d e L i s t . s e t ( index , newGrade ) ;
r e s u l t = true ;
}
return r e s u l t ;
}
/? ?
? Method t o r e t u r n t h e a v e r a g e o f t h e g r a d e s f o r t h i s s t u d e n t
? @return t h e a v e r a g e o f t h e g r a d e s or 0 . 0 i f no g r a d e l i s t or
? no g r a d e s
?/
public double g e t A v e r a g e ( )
{
double a v e r a g e = 0 . 0 ;
i f ( t h i s . g r a d e L i s t != null && t h i s . g r a d e L i s t . s i z e ( ) > 0 )
{
double sum = 0 . 0 ;
f o r ( i nt i = 0 ; i < t h i s . g r a d e L i s t . s i z e ( ) ; i ++)
{
sum = sum + t h i s . g r a d e L i s t . g e t ( i ) ;
}
a v e r a g e = sum / t h i s . g r a d e L i s t . s i z e ( ) ;
}
return a v e r a g e ;
}
/? ?
? Method t o r e t u r n t h e a v e r a g e o f t h e g r a d e s a f t e r you drop
? the l o w e s t grade f o r t h i s student
? @return t h e a v e r a g e o f t h e g r a d e s or 0 . 0 i f no g r a d e l i s t or
? no g r a d e s
?/
public double getAverageDropLowest ( )
{
double a v e r a g e = 0 . 0 ;
double l o w e s t = 1 0 0 ;
i n t numGrades = t h i s . g r a d e L i s t . s i z e ( ) ;
i f ( t h i s . g r a d e L i s t != null && numGrades > 0 )
{
double sum = 0 . 0 ;
// l o o p t h r o u g h t h e g r a d e s
f o r ( i nt i = 0 ; i < t h i s . g r a d e L i s t . s i z e ( ) ; i ++)
{
// c h e c k i f t h i s i s l o w e r
i f ( this . gradeList . get ( i ) < lowest )
{
lowest = this . gradeList . get ( i ) ;
}
// add t h i s g r a d e t o t h e sum
sum = sum + t h i s . g r a d e L i s t . g e t ( i ) ;
}
// i f t h e r e was more tha n one g r a d e remove t h e l o w e s t
i f ( numGrades > 1 )
{
sum = sum ? l o w e s t ;
numGrades??;
}
a v e r a g e = sum / numGrades ;
}
return a v e r a g e ;
}
/? ?
? Method t o r e t u r n a s t r i n g w i t h i n f o r m a t i o n a b o u t t h i s s t u d e n t
? @return a s t r i n g w i t h i n f o r m a t i o n a b o u t t h e s t u d e n t
?/
public S t r i n g t o S t r i n g ( ) {
return ” Student o b j e c t named : ” + t h i s . name +
” Average : ” + t h i s . g e t A v e r a g e ( ) ;
}
/? Used t o t e s t ?/
// p u b l i c s t a t i c v o i d main ( S t r i n g [ ] a r g s )
//
//
//
//
//
//
//
//
//
//
//
{
Making Text for the Web
S t u d e n t s t u d e n t 1 = new S t u d e n t (” Barb E r i c s o n ” ) ;
System . o u t . p r i n t l n ( s t u d e n t 1 ) ;
d o u b l e [ ] gradeArray1 = { 9 0 , 8 8 , 9 5 , 9 6 , 9 3 } ;
S t u d e n t s t u d e n t 2 = new S t u d e n t (” Mark G u z d i a l ” , gradeArray1 ) ;
System . o u t . p r i n t l n ( s t u d e n t 2 ) ;
P i c t u r e b a r b = new P i c t u r e ( F i l e C h o o s e r . getMediaPath (” b a r b a r a . j p g ” ) ) ;
student1 . s e t P i c t u r e ( barb ) ;
s t u d e n t 1 . show ( ) ;
s t u d e n t 2 . show ( ) ;
}
/? ?
? Method t o compare t h e c u r r e n t s t u d e n t
? with a passed in o b j e c t
? @param o t h e o b j e c t p a s s e d i n
? @return n e g a t i v e i f t h e c u r r e n t s t u d e n t
? i s l e s s tha n t h e p a s s e d o b j e c t
? 0 i f they are equal
? Positive i f the current student i s
? g r e a t e r th an t h e p a s s e d i n o b j e c t
? Warning t h i s w i l l s a y two s t u d e n t s
? w i t h t h e same name a r e e q u a l !
?/
public i n t compareTo ( Ob jec t o )
{
Student t e s t S t u d e n t = ( Student ) o ;
return t h i s . name . compareTo ( t e s t S t u d e n t . name ) ;
}
/? Used t o t e s t ?/
public s t a t i c void main ( S t r i n g [ ] a r g s )
{
// t e s t t h e c o n s t r u c t o r t h a t t a k e s a d e l i m i t e d s t r i n g
Student s t u d e n t 3 =
new Student ( ” Susan E r i c s o n : 5 0 , 6 0 , 7 0 , 8 0 , 9 0 , 1 0 0 ” , ” : ” , ” , ” ) ;
System . out . p r i n t l n ( s t u d e n t 3 ) ;
System . out . p r i n t l n ( s t u d e n t 3 . getAverageDropLowest ( ) ) ;
}
}
```

Computer Science & Information Technology

You might also like to view...

While investigating a widespread distributed denial of service attack, Matt types in the IP address of one of the attacking systems into his browser and sees the following page. What type of devices is the botnet likely composed of?

A. SCADA B. Cloud infrastructure C. Web servers D. IoT

Computer Science & Information Technology

Critical Thinking QuestionsCase 8-2You know the technical definition of a media query as offered by the W3C: "A media query consists of a media type and zero or more expressions that check for the conditions of particular media features." But you do not know much more than this so you decide to ask your roommate for a brief tutorial. Which of the following is NOT a use for media queries, according to your roommate?

A. specifying that the position of a div is different when a media type has different media features B. building a static Web site C. specifying different values for a style when it is used in more than one layout D. creating styles that apply only to one layout

Computer Science & Information Technology