Respuesta :
Answer:
Java code is given below with appropriate comments
Explanation:
import java.util.*;
public class Student
{
String ID, lastName;
//Arraylist to store courses
ArrayList courses = new ArrayList();
public Student()
{
//Default constructor
ID = "";
lastName = "";
}
public Student(String I, String l)
{
//Parameterized Constructor to initialize
ID = I;
lastName = l;
int i, n;
String temp;
Scanner sc = new Scanner(System.in);
System.out.print("\nHow many courses you want to add: ");
n = Integer.parseInt(sc.nextLine());
if(n < 3){ //Cannot choose less than 3 courses
System.out.println("\nNumber of courses must be at least 3.");
return;
}
for(i = 1; i <= n; i++)
{
System.out.print("\nEnter course name: ");
temp = sc.nextLine();
if(courses.contains(temp))//If course already present
{
System.out.println("\nCourse already present. Try another.");
i--;
}
else
{
courses.add(temp); //Adding course
}
}
}
//Accessors
public String getID()
{
return ID;
}
public String getName()
{
return lastName;
}
public ArrayList getCourses()
{
return courses;
}
//Mutators
public void setID(String i)
{
ID = i;
}
public void setName(String n)
{
lastName = n;
}
public void setCourses(ArrayList c)
{
courses.clear();
courses.addAll(c);
}
}
class StudentTest
{
//To store 10 students
Student[] list = new Student[10];
public StudentTest(){
int i, j, flag;
Scanner sc = new Scanner(System.in);
for(i = 0; i < 10; i++)
{
String temp, l;
System.out.print("\nEnter student ID: ");
temp = sc.nextLine();
flag = 1;
for(j = 0; j < i; j++)
{
if(list[j].getID().equals(temp))//If ID already exists
{
System.out.println("\nID already exists. Try another.");
flag = 0;
i--;
break;
}
}
if(flag == 1)
{
System.out.print("\nEnter student Last name: ");
l = sc.nextLine();
list[i] = new Student(temp, l); //Initializing student
}
}
}
public void sort()
{
//To sort and display
int i, j;
String temp;
ArrayList t = new ArrayList();
for(i = 0; i < 9; i++)
{
for(j = 0; j < 9 - i; j++)
{
if(list[j].getName().compareTo(list[j + 1].getName()) > 0)//If list[j + 1].lastName needs to come before list[j].lastName
{
//Swapping IDs
temp = list[j].getID();
list[j].setID(list[j + 1].getID());
list[j + 1].setID(temp);
//Swapping last names
temp = list[j].getName();
list[j].setName(list[j + 1].getName());
list[j + 1].setName(temp);
//Swapping courses
t.clear();
t.addAll(list[j].getCourses());
list[j].setCourses(list[j + 1].getCourses());
list[j + 1].setCourses(t);
}
}
}
//Display
System.out.println();
for(i = 0; i < 10; i++)
{
System.out.print(list[i].getID() + ", " + list[i].getName());
//Using fencepost loop to print with comma before
System.out.print(" " + list[i].getCourses().get(0));
for(j = 1; j < list[i].getCourses().size(); j++)
System.out.print(", " + list[i].getCourses().get(j));
System.out.println();
}
}
public static void main(String args[])
{
StudentTest S = new StudentTest();
S.sort();
}
}