For this assignment you will do two things: add to the AdultStudent class and write a driver program for the new AdultStudent class.
First you should modify the AdultStudent class by writing an accessor for the major of the AdultStudent object: public String getMajor()
Next you need to write a driver program for the AdultStudent class. It will use the Arrays class for printing and sorting. In particular, it must:
Have a static constant for the number of AdultStudent objects in the array called MAX.
Create an array of MAX AdultStudent objects and fill them with appropriate test values using calls to the default or parameterized constructor of the AdultStudent class.
Print the filled AdultStudent array using the toString() method of the Arrays class. Do NOT use a loop.
Sort the AdultStudent objects using a call to Arays.sort() that uses the Comparable interface.
Print the newly sorted AdultStudent array using the toString() method of the Arrays class. Do NOT use a loop.
Sort the AdultStudents using a call to Arrays.sort() with a lambda expression. The lambda expression will sort based on the major of the AdultStudent. This lambda expression must use the major accessor that you wrote in the first step of the assignment. Strings should be compared using the compareTo() method of the String class.
Print the newly sorted AdultStudent array using the toString() method of the Arrays class. Do NOT use a loop.
Below is the sample output that my completed solution produced. You are not required to use my particular AdultStudent objects in your solution, but I wanted to give you a concrete example to consider.
The AdultStudent array: [Name: default, birth year: 1999, major: computer science, Name: Joon, birth year: 1996, major: digital cinema, Name: Djengo, birth year: 1999, major: information systems]
The AdultStudent array, after sorting (using compareTo): [Name: default, birth year: 1999, major: computer science, Name: Djengo, birth year: 1999, major: information systems, Name: Joon, birth year: 1996, major: digital cinema]
The AdultStudent array, after sorting (using the lambda): [Name: default, birth year: 1999, major: computer science, Name: Joon, birth year: 1996, major: digital cinema, Name: Djengo, birth year: 1999, major: information systems]
Submit two Java files (AdultStudent.java and AdultStudentDriver.java)
AdultStudent.java
package people;
import java.time.LocalDate;
public class AdultStudent extends Person implements Comparable<AdultStudent>{
private String major;
private final int AGE_MAJ = 18;
public AdultStudent() {
LocalDate today = LocalDate.now();
name = “default”;
bYear = today.getYear() – AGE_MAJ;
major = “computer science”;
}
public AdultStudent(String n, int y, String m) {
LocalDate today = LocalDate.now();
int year = today.getYear();
if (y <= year – AGE_MAJ)
bYear = y;
else bYear = year – AGE_MAJ;
name = n;
major = m;
}
// Write this method
public String getMajor() {
// A stub — remove when you write the method
return “”;
}
public int compareTo(AdultStudent other) {
return age() – other.age();
}
public String toString() {
return super.toString() + “, major: ” + major;
}
}
Person.java
package people;
import java.time.LocalDate;
public class Person {
protected int bYear;
protected String name;
public Person() {
LocalDate today = LocalDate.now();
name = “default”;
bYear = today.getYear();
}
public Person(String initName, int birthYear) {
name = initName;
bYear = birthYear;
}
public int age() {
LocalDate today = LocalDate.now();
return today.getYear() – bYear;
}
public String toString() {
return String.format(“Name: %s, birth year: %d”, name, bYear);
}
}
For this assignment you will do two things: add to the AdultStudent class and write a driver program for the new AdultStudent class.
This is what I have for AdultStudentDriver.java, the sort line doesn’t work:
import java.util.Arrays;
public class AdultStudentDriver
{
// main method creates arrays, sorts them and prints them
public static void main(String args[]){
AdultStudent[] as=new AdultStudent[3];
as[0]=new AdultStudent();
as[1]=new AdultStudent(“Joon”,1996,”digital”);
as[2]=new AdultStudent(“Djengo”,1999,” information systems”);
System.out.printf(“The AdultStudent array:”);
System.out.println(Arrays.toString(as));
Arrays.sort(as);
System.out.println();
System.out.printf(“The AdultStudent array, after sorting (using compareTo):”);
System.out.println(Arrays.toString(as));
System.out.println();
Arrays.sort(as,
(AdultStudent a, AdultStudent b) -> b.getMajor().compareTo(a.getMajor()));
System.out.printf(“The AdultStudent array, after sorting (using the lambda):”);
System.out.println(Arrays.toString(as));
}
}
Expert Answer
import java.util.Arrays;
public class AdultStudentDriver{
private static final int MAX=3;
public static void main(String[] args){
AdultStudent[] students=new AdultStudent[MAX];
AdultStudent def=new AdultStudent();
AdultStudent joon=new AdultStudent(“Joon”,1996,”digital cinema”);
AdultStudent djengo=new AdultStudent(“Djengo”,1999,”information systems”);
students[0]=def;
students[1]=joon;
students[2]=djengo;
System.out.println(“The AdultStudent array:”+Arrays.toString(students));
Arrays.sort(students);
System.out.println(“nThe AdultStudent array, after sorting (using compareTo)::”+Arrays.toString(students));
Arrays.sort(students,(AdultStudent s1,AdultStudent s2)->s1.getMajor().compareTo(s2.getMajor()));
System.out.println(“nThe AdultStudent array, after sorting (using compareTo)::”+Arrays.toString(students));
}
}
AdultStudent.java
import java.time.LocalDate;
public class AdultStudent extends Person implements Comparable<AdultStudent>{
private String major;
private final int AGE_MAJ = 18;
public AdultStudent() {
LocalDate today = LocalDate.now();
name = “default”;
bYear = today.getYear() – AGE_MAJ;
major = “computer science”;
}
public AdultStudent(String n, int y, String m) {
LocalDate today = LocalDate.now();
int year = today.getYear();
if (y <= year – AGE_MAJ)
bYear = y;
else bYear = year – AGE_MAJ;
name = n;
major = m;
}
// Write this method
public String getMajor() {
return this.major;
}
public int compareTo(AdultStudent other) {
return age() – other.age();
}
public String toString() {
return super.toString() + “, major: ” + major;
}
}
Note: Compile these files along with Person.java to get the expected output.
Output: