Car Talk Lab
<< Cryptography Lab | LabTrailIndex | Employee >>
How do you search for a name?
All the names and jobs are in the ArrayList of Employee. The Employee class has an "get" method (technically called an "accessor" method for these, like
Employee e = new Employee ("Oscar Muppet", "Trash Talker");
String full=e.getName();
String last=e.getLastName();
String j=e.getJob();
Here e is the instance of the Employee class, and full would contain "Oscar Muppet", last would contain "Muppet", and j would contain "Trash Talker"
Here is a "tab-separated" text file of various Names and Jobs that are listed from the Car Talk radio program: Attach:CarTalkStaff.txt
- Make a Java Project and place the download the
CarTalkStaff.txtfile in that folder (If you are using Eclipse, put it in the same folder as your .class files) - Make an
EmployeeClass with fields for Full Name, Last Name, Job, Phone Number and SSN - Make an Application that reads the
CarTalkStaff.txtfile into anArrayList<Employee>and prints out the Job and Name of the tenth Employee
// This is the old way before there was a Scanner class in Java 5
try
{
FileInputStream fstream = new FileInputStream("CarTalkStaff.txt");
DataInputStream in = new DataInputStream(fstream);
BufferedReader br = new BufferedReader(new InputStreamReader(in));
String strLine;
while ((strLine = br.readLine()) != null)
{
System.out.println (strLine);
}
in.close();
} catch (Exception e)
{
System.err.println("Error: " + e.getMessage());
}
import java.io.*;
import java.util.ArrayList;
import java.util.Scanner;
public class CarTalk {
public static void main(String args[])
{
try{
ArrayList<Employee> folks= readEmployeeFile(new File("CarTalkStaff.txt"));
//Your code here
Employee tenth = folks.get(9);
System.out.println("10. Our "+tenth.getJob()+ " is " +tenth.getFullName());
} catch (Exception e){
System.err.println("Drat!: " + e.getMessage());
}
}
public static ArrayList<Employee> readEmployeeFile(File fromFile) throws IOException {
Scanner in = new Scanner(fromFile);
ArrayList<Employee> result=new ArrayList<Employee>();
String line = null;
while (in.hasNextLine()) {
line = in.nextLine();
result.add(new Employee(line.split("\t")));
}
in.close();
return result;
}
}
- Make your application ask for an
intand then print out the Job and Name of the Employee that corresponds to that number. - Make an Exception that can be caught if you try to read beyond the ArrayList (don't depend on the default 'OutOfBounds' exception -- make your own error message like "I don't have that many! Try again")
- Make your application ask for a
Stringand then print out the Job and Name of all Employees that have thatStringsomewhere in the name or job title.
import java.io.*;
import java.util.ArrayList;
import java.util.Scanner;
public class CarTalk {
public static void main(String args[])
{
Scanner kb=new Scanner(System.in);
try{
ArrayList<Employee> folks= readEmployeeFile(new File("CarTalkStaff.txt"));
System.out.print("Type an search string: ");
ArrayList<Employee> result = search(kb.nextLine(), folks);
for (Employee emp : result)
System.out.println(" Our "+emp.getJob()+ " is " +emp.getFullName());
} catch (Exception e){
System.err.println("Drat!: " + e.getMessage());
}
}
private static ArrayList<Employee> search(String target, ArrayList<Employee> folks)
{
//your code here
}
public static ArrayList<Employee> readEmployeeFile(File fromFile) throws IOException {
Scanner in = new Scanner(fromFile);
ArrayList<Employee> result=new ArrayList<Employee>();
String line = null;
while (in.hasNextLine()) {
line = in.nextLine();
result.add(new Employee(line.split("\t")));
}
in.close();
return result;
}
}
