In: Computer Science
sort by the following (name, address, dependent and gender) of these fields and ask the user which field to sort by !. this mean the following java must sort by address if we need, by name , by dependent , and by gender it depend on the following java it must have an option which we need to sort. please i need your help now, you just add the sorting on the following java.
// Use a custom comparator.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;
class Emprec {
String name;
String address;
double hours;
double rate;
int dependents;
char gender;
boolean degree;
// This is the classes's constructor !!!!
Emprec(String name, String address, String hours,String dependents) {
try {
this.name =
name;
this.address =
address;
this.hours =
Double.valueOf(hours).doubleValue();
this.dependents
= Integer.parseInt(dependents);
} catch (NumberFormatException
errmsg) {
System.out.println("Invalid format" + errmsg);
this.name =
"";
this.hours =
0.0;
}// catch
}// Emprec constructor !!!!
double calc_fed_tax(double hours, double rate) {
double yearly_income;
yearly_income = hours * rate * 52;
if (yearly_income <
30000.00)
return (hours *
rate * .28);
else if (yearly_income <
50000.00)
return (hours *
rate * .32);
else
return (hours *
rate * .38);
}// calc_fed_tax
double calc_state_tax(double hours, double rate) {
double state_tax;
state_tax = hours * rate * .0561;
return (state_tax);
}// calc_state_tax
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
public String getAddress() {
return address;
}
public double getHours() {
return hours;
}
public int getDependents() {
return dependents;
}
public double getRate(){
return rate;
}
public char getGender(){
return gender;
}
public String toString() {
return ("\n Name: " + name
+
"\n Address: " + address +
"\n Hours: " + hours+
"\n Dependents " + dependents);
}// toString
}// Emprec
public class CompDemo3Sorts_Improved {
public static void main(String args[]) throws
IOException {
// Create a tree set
BufferedReader inData = new
BufferedReader(new InputStreamReader(
System.in));
// create strings for the input
data for the Emprec object
String str_name;
String str_address;
String str_hours;
String str_dependents;
TreeSet ts = new TreeSet(new
MyCompHours());// eclipse ask for casting
for (;;) {
System.out.print(" name: ");
str_name =
inData.readLine();
if
(str_name.equalsIgnoreCase("exit")) break;
System.out.print(" Address: ");
str_address =
inData.readLine();
System.out.print(" Hours: ");
str_hours =
inData.readLine();
System.out.print(" Dependents: ");
str_dependents =
inData.readLine();
Emprec employee = new Emprec(str_name, str_address, str_hours,str_dependents);
ts.add(employee);
}// for
// Get an iterator
Iterator i = ts.iterator();
// Display elements
while (i.hasNext()) {
Object element =
i.next();
System.out.print(element + "\n");// calls the toString()
}//while
System.out.println();
}
}
class MyCompName implements Comparator{ // eclipse ask for
casting object
public int compare(Object emp1, Object emp2) {
String emp1Name = ((Emprec) emp1).getName();
String emp2Name = ((Emprec) emp2).getName();
return
((emp2Name.compareTo(emp1Name) <= 0) ? -1 : +1);
}
}
class MyCompHours implements Comparator{ // eclipse ask for casting
object
public int compare(Object emp1, Object emp2) {
double emp1Hours = ((Emprec) emp1).getHours();
double emp2Hours = ((Emprec) emp2).getHours();
return (emp1Hours <= emp2Hours)?
-1:+1;
}
}
class MyCompAddress implements Comparator{ // eclipse ask for
casting object
public int compare(Object emp1, Object emp2) {
String emp1Address = ((Emprec) emp1).getAddress();
String emp2Address = ((Emprec) emp2).getAddress();
return
((emp2Address.compareTo(emp1Address) <= 0) ? -1 : +1);
}
}
class MyCompRate implements Comparator{
public int compare(Object emp1, Object emp2){
double emp1Rate = ((Emprec) emp1).getRate();
double emp2Rate = ((Emprec) emp2).getRate();
return ((emp1Rate <= emp2Rate) ? -1 : +1);
}
}
class MyCompDependents implements Comparator{
public int compare(Object emp1, Object emp2){
int emp1Dependents = ((Emprec) emp1).getDependents();
int emp2Dependents = ((Emprec) emp2).getDependents();
return ((emp1Dependents <= emp2Dependents) ? -1 : +1);
}
}
class MyCompGender implements Comparator{
public int compare(Object emp1, Object emp2){
char emp1Gender = ((Emprec) emp1).getGender();
char emp2Gender = ((Emprec) emp2).getGender();
return ((emp1Gender <= emp2Gender) ? -1 : +1);
}
}
//Sorting program depending on user choice
// Use a custom comparator.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;
class Emprec
{
String name;
String address;
double hours;
double rate;
int dependents;
char gender;
boolean degree;
// This is the classes's constructor !!!!
Emprec(String name, String address, String hours,String dependents)
{
try
{
this.name = name;
this.address = address;
this.hours = Double.valueOf(hours).doubleValue();
this.dependents = Integer.parseInt(dependents);
}
catch (NumberFormatException errmsg)
{
System.out.println("Invalid format" + errmsg);
this.name = "";
this.hours = 0.0;
}// catch
}// Emprec constructor !!!!
double calc_fed_tax(double hours, double rate)
{
double yearly_income;
yearly_income = hours * rate * 52;
if (yearly_income < 30000.00)
return (hours * rate * .28);
else if (yearly_income < 50000.00)
return (hours * rate * .32);
else
return (hours * rate * .38);
}// calc_fed_tax
double calc_state_tax(double hours, double rate)
{
double state_tax;
state_tax = hours * rate * .0561;
return (state_tax);
}// calc_state_tax
public void setName(String name)
{
this.name = name;
}
public String getName()
{
return name;
}
public String getAddress()
{
return address;
}
public double getHours()
{
return hours;
}
public int getDependents()
{
return dependents;
}
public double getRate()
{
return rate;
}
public char getGender()
{
return gender;
}
public String toString()
{
return ("\n Name: " + name +
"\n Address: " + address +
"\n Hours: " + hours+
"\n Dependents " + dependents);
}// toString
}// Emprec
public class CompDemo3Sorts_Improved
{
public static void main(String args[]) throws IOException
{
CompDemo3Sorts_Improved ob=new CompDemo3Sorts_Improved();
ob.sort();
// Create a tree set
BufferedReader inData = new BufferedReader(new InputStreamReader(
System.in));
// create strings for the input data for the Emprec object
String str_name;
String str_address;
String str_hours;
String str_dependents;
TreeSet ts = new TreeSet(new MyCompHours());// eclipse ask for casting
for (;;)
{
System.out.print(" name: ");
str_name = inData.readLine();
if (str_name.equalsIgnoreCase("exit")) break;
System.out.print(" Address: ");
str_address = inData.readLine();
System.out.print(" Hours: ");
str_hours = inData.readLine();
System.out.print(" Dependents: ");
str_dependents = inData.readLine();
Emprec employee = new Emprec(str_name, str_address, str_hours,str_dependents);
ts.add(employee);
}// for
// Get an iterator
Iterator i = ts.iterator();
// Display elements
while (i.hasNext())
{
Object element = i.next();
System.out.print(element + "\n");// calls the toString()
}//while
System.out.println();
}
}
class MyCompName implements Comparator
{ // eclipse ask for casting object
public int compare(Object emp1, Object emp2)
{
String emp1Name = ((Emprec) emp1).getName();
String emp2Name = ((Emprec) emp2).getName();
return ((emp2Name.compareTo(emp1Name) <= 0) ? -1 : +1);
}
}
class MyCompHours implements Comparator
{ // eclipse ask for casting object
public int compare(Object emp1, Object emp2)
{
double emp1Hours = ((Emprec) emp1).getHours();
double emp2Hours = ((Emprec) emp2).getHours();
return (emp1Hours <= emp2Hours)? -1:+1;
}
}
class MyCompAddress implements Comparator
{ // eclipse ask for casting object
public int compare(Object emp1, Object emp2)
{
String emp1Address = ((Emprec) emp1).getAddress();
String emp2Address = ((Emprec) emp2).getAddress();
return ((emp2Address.compareTo(emp1Address) <= 0) ? -1 : +1)
}
}
class MyCompRate implements Comparator
{
public int compare(Object emp1, Object emp2)
{
double emp1Rate = ((Emprec) emp1).getRate();
double emp2Rate = ((Emprec) emp2).getRate();
return ((emp1Rate <= emp2Rate) ? -1 : +1);
}
}
class MyCompDependents implements Comparator
{
public int compare(Object emp1, Object emp2)
{
int emp1Dependents = ((Emprec) emp1).getDependents();
int emp2Dependents = ((Emprec) emp2).getDependents();
return ((emp1Dependents <= emp2Dependents) ? -1 : +1);
}
}
class MyCompGender implements Comparator
{
public int compare(Object emp1, Object emp2)
{
char emp1Gender = ((Emprec) emp1).getGender();
char emp2Gender = ((Emprec) emp2).getGender();
return ((emp1Gender <= emp2Gender) ? -1 : +1);
}
}
//sort method sort the data depending on user choice
void sort()
{
String name[]=new String[10];
String address[]=new String[10];
String dependent[]=new String [10];
String gender[]=new String[10];
int l=arg.length;
String temp;
int ch1;
ch1=Integer.parseInt(arg[0]);
switch(ch1)
{
//sort by name
case 1:
for(int i=0;i<l;i++)
{
name[i]=arg[i];
}
for(int j=0;j<l;j++)
{
for(int k=j+1;k<l;k++)
{
if((name[j].compareTo(name[k]))>0)
{
temp=name[j];
name[j]=name[k];
name[k]=temp;
}
}
}
System.out.println("Sorted names");
for(int i=0;i<l;i++)
{
System.out.println(name[i]);
}
break;
//sort by address
case 2:
for(int i=0;i<l;i++)
{
address[i]=arg[i];
}
for(int j=0;j<l;j++)
{
for(int k=j+1;k<l;k++)
{
if((address[j].compareTo(address[k]))>0)
{
temp=address[j];
address[j]=address[k];
address[k]=temp;
}
}
}
System.out.println("Sorted address");
for(int i=0;i<l;i++)
{
System.out.println(address[i]);
}
break;
//sort by gender
case 3:
for(int i=0;i<l;i++)
{
gender[i]=arg[i];
}
for(int j=0;j<l;j++)
{
for(int k=j+1;k<l;k++)
{
if((gender[j].compareTo(gender[k]))>0)
{
temp=address[j];
gender[j]=gender[k];
gender[k]=temp;
}
}
}
System.out.println("Sorted Gender");
for(int i=0;i<l;i++)
{
System.out.println( gender[i]);
}
break;
//sort by dependent value
case 4:
for(int i=0;i<l;i++)
{
dependent[i]=arg[i];
}
for(int j=0;j<l;j++)
{
for(int k=j+1;k<l;k++)
{
if((dependent[j].compareTo(dependent[k]))>0)
{
temp=address[j];
dependent[j]=dependent[k];
dependent[k]=temp;
}
}
}
System.out.println("Sorted dependent");
for(int i=0;i<l;i++)
{
System.out.println( dependent[i]);
}
break;
default:
System.out.println("\n\n please enter valid choice");
}
}
Output: