Difference between revisions of "SET08112"

From Progzoo
Jump to: navigation, search
(Problem 2 - List Routes)
 
(22 intermediate revisions by the same user not shown)
Line 1: Line 1:
==SET08112 ArrayList Interface Tutorial==
+
==SET08112 - Algorithms and Data Structure==
In this tutorial you will use the ArrayList and the HashMap or TreeMap to solve some common problems.
+
*[[ArrayList Tutorial]]
You will use methods such as:
+
*[[Recursion Tutorial]]
* java.util.Collections.sort
+
*[[Finite State Machines Tutorial]] and [[Finite State Machine|FSM from lecture]]
* add
+
*[[Assessment 2011 Tornado]]
* get
+
*[[Recursive Descent Parsers]]
 
+
*[[Tree Tutorial]]
==Problem 1 - Sort a List==
 
<question className="SortStudents" title="Using Sort" copyfile="students.txt">
 
The file  from http://www.dcs.napier.ac.uk/~cs66/SET08112/tut2/students.txt  contains a list of students:
 
ADAMS, ROBERT
 
HASTIE, MARTIN
 
OTHIENO, JUDITH
 
ANDERSON, ROSS
 
...
 
Create a programme SortStudents.java that reads in this file and outputs the students in Alphabetical order.
 
*You can use an ArrayList to hold the students.
 
*ArrayList&lt;String> names = new ArrayList&lt;String>();
 
*You can use [http://download.oracle.com/javase/6/docs/api/java/util/Collections.html#sort%28java.util.List%29 java.util.Collections.sort] to sort the ArrayList
 
<hint>
 
Add this line after you have filled the ArrayList but before you print it.
 
java.util.Collections.sort(names);
 
</hint>
 
<prog>
 
import java.util.ArrayList;
 
import java.io.BufferedReader;
 
import java.io.FileReader;
 
 
public class SortStudents{
 
  public static void main(String[]argv) throws Exception{
 
    ArrayList&lt;String> names = new ArrayList&lt;String>();
 
    String line;
 
    BufferedReader fh
 
      = new BufferedReader(new FileReader("students.txt"));
 
    while (null!=(line=fh.readLine()))
 
      names.add(line);
 
    for (String s:names)
 
      System.out.println(s);
 
  }
 
}
 
</prog>
 
<answer>
 
import java.util.ArrayList;
 
import java.io.BufferedReader;
 
import java.io.FileReader;
 
 
public class SortStudents{
 
  public static void main(String[]argv) throws Exception{
 
    ArrayList&lt;String> names = new ArrayList&lt;String>();
 
    String line;
 
BufferedReader fh
 
= new BufferedReader(new FileReader("students.txt"));
 
    while (null!=(line=fh.readLine()))
 
      names.add(line);
 
    java.util.Collections.sort(names);
 
    for (String s:names)
 
      System.out.println(s);
 
  }
 
}
 
</answer>
 
</question>
 
 
 
==Problem 2 - List Routes==
 
<question className="SortStudents" title="Using Sort" copyfile="year1.txt">
 
The file year1.txt contains a list of all students in year one. Each line contains the name of the student and the name of the route (programme) they follow separated by a tab.
 
Brando, Marlon BSC (HONS) DIGITAL MEDIA F/T
 
Bridges, Jeff BSC (HONS) INTERACTIVE MEDIA DESIGN F/T
 
Brody, Adrien BENG (HONS) COMPUTER SECURITY AND FORENSICS F/T
 
 
 
Write a program to read in this file and output a list of routes with no duplicates.
 
You can use a program very similar to the one above – but this time:
 
*Use line.split("\t") to get the route
 
*Use contains to only add the route if it is not already in the ArrayList
 
*You do not need to sort before output
 
 
 
<prog>
 
import java.util.ArrayList;
 
import java.io.BufferedReader;
 
import java.io.FileReader;
 
 
public class SortStudents{
 
  public static void main(String[]argv) throws Exception{
 
    ArrayList&lt;String> names = new ArrayList&lt;String>();
 
    String line;
 
    BufferedReader fh
 
      = new BufferedReader(new FileReader("year1.txt"));
 
    while (null!=(line=fh.readLine())){
 
      String [] st = line.split("\t");
 
      names.add(st[1]);
 
    }
 
    for (String s:names)
 
      System.out.println(s);
 
  }
 
}
 
</prog>
 
<answer>
 
import java.util.ArrayList;
 
import java.io.BufferedReader;
 
import java.io.FileReader;
 
 
public class SortStudents{
 
  public static void main(String[]argv) throws Exception{
 
    ArrayList&lt;String> names = new ArrayList&lt;String>();
 
    String line;
 
    BufferedReader fh
 
      = new BufferedReader(new FileReader("year1.txt"));
 
    while (null!=(line=fh.readLine())){
 
      String [] st = line.split("\t");
 
      if (!names.contains(st[1]))
 
        names.add(st[1]);
 
    }
 
    for (String s:names)
 
      System.out.println(s);
 
  }
 
}
 
</answer>
 
</question>
 

Latest revision as of 09:37, 2 March 2012