For ease of programming you can consider the maze as a 2D
array with colors represented by below integer and
characters (in capital letters).
• B - Black
• W -White
• G- Green
• R- Red
R B W B W W W W
W W
B W B B W W W W
W W
W B W B W W W B
W W
W W B B W W W B
W W
W B W W B B B B
W B
W B W W B W W W
B W
W W B B B W W B
W W
W B W W B W B W
W W
B W B W W W W B
B W
W W W B W W W W
W G
Shortest Route Problem:
• Solution that finds the shortest Route between Red
and Green
 White will have 1 Weight.
 Red and Green carry no weights.
 Shortest path is the path with less weight when you
add up the weights in the path.
86
Hi....
I applied for the post of scientific
officer/Engineer-SB(Programmer).Please post the syllabus and
sample papers.
120
What releases of Java technology are currently available?
What do they contain?
116
what are Hostile Applets?
134
We are seeing so many videos/audios as many web sited. But
question is these videos or audios are stored in Databases (
Oracle, Mysql, Sybase,... ) or stored any file directory
from there they will give the link for that? Pls explain and
give sample code to achieve this one? Thanks, Seenu.
Hi
Anyone know the model / questions of the Federal bank sample
questions for the post of Specialist Officers -
Programmers. Please post if anyone have..
359
The following program reads data (details of students) from
a file named students.txt and
converts it into e-mail addresses. The results are written
to a file named studentemail.txt.
students.txt consists of a number of lines, each containing
the data of a student in colon
delimited format:
Last Name:First Name:Student Number
Each input record is converted to an e-mail address and
written to studentemail.txt in the
following format:
the first character of the last name + the first character
of the first name + the last four digits of
the student number + “@myunisa.ac.za”
import java.io.*;
public class EmailConverter {
public static void main(String[] args) throws IOException {
BufferedReader input = new BufferedReader(new FileReader
("students.txt"));
PrintWriter output = new PrintWriter(new FileWriter
("studentemail.txt"));
String line = input.readLine();
while (line != null) {
// Extract the information for each student
String[] items = line.split(":");
// Generate the email address
String email = "" + items[0].charAt(0) + items[1].charAt(0)
+
items[2].substring(4,8) + "@myunisa.ac.za";
email = email.toLowerCase();
// Output
output.println(email);
line = input.readLine();
}
input.close();
output.close();
}
}
Rewrite the class so that it handles possible errors that
may occur. In particular, it should do the
following:
• It should catch at least three appropriate exceptions
that might occur, and display suitable
messages.
• At this stage, the program will not run correctly if
there is an empty line in the input file.
Change the program so that if an empty line is encountered,
an exception is thrown and the
empty line is ignored. This exception should be handled
with the display of a suitable error
message.
• Before the e-mail address is added to the output file,
check if the student number has 8
digits. If not, throw an InvalidFormatException (which the
program should not handle itself)
21
How listener identify that the event came from a particular
object?
107
how to know the total memory occupied by the objects in the
ArrayList(Array list may contain duplicate objects)
41
Question 5 [15]
Consider the following classes, illustrating the Strategy
design pattern:
import java.awt.*;
abstract class Text {
protected TextApplet tA;
protected Text(TextApplet tApplet) {
tA = tApplet;
}
abstract public void draw(Graphics g);
}
class PlainText extends Text {
protected PlainText(TextApplet tApplet) {
super(tApplet);
}
public void draw(Graphics g) {
g.setColor(tA.getColor());
g.setFont(new Font("Sans-serif", Font.PLAIN, 12));
g.drawString(tA.getText(), 20, 20);
}
}
class CodeText extends Text {
protected CodeText(TextApplet tApplet) {
super(tApplet);
}
public void draw(Graphics g) {
g.setColor(tA.getColor());
g.setFont(new Font("Monospaced", Font.PLAIN, 12));
g.drawString(tA.getText(), 20, 20);
}
}
public class TextApplet extends java.applet.Applet {
protected Text text;
protected String textVal;
protected Color color;
public String getText() {
return textVal;
}
public Color getColor() {
return color;
}
public void init() {
textVal = getParameter("text");
String textStyle = getParameter("style");
String textColor = getParameter("color");
if (textStyle == "code")
text = new CodeText(this);
else
text = new PlainText(this);
if (textColor == "red")
color = Color.RED;
else if (textColor == "blue")
color = Color.BLUE;
else
color = Color.BLACK;
}
public void paint(Graphics g) {
text.draw(g);
10
}
}
The Text class is more complicated than it should be (there
is too much coupling between the
Text and TextApplet classes). By getting rid of the
reference to a TextApplet object in the
Text class and setting the colour in the paint() method,
one could turn the Text class into an
interface and simplify the strategy classes considerably.
5.1 Rewrite the Text and PlainText classes to do what is
described above. (6)
5.2 Explain the consequent changes that are necessary to
the TextApplet class. (4)
5.3 Write an additional strategy class called FancyText (to
go with your simplified
strategy classes) to allow fancy text to be displayed for
the value "fancy" provided
for the style parameter. It should use the font Font
("Serif", Font.ITALIC, 12).
(3)
5.4 Explain what changes are necessary to the TextApplet
class for this. (2)
What are the restrictions imposed by a Security Manager on
Applets?.
168
Question 7 [8]
Consider the following class and answer the questions below
it:
public class StackWithGuard extends Stack {
public StackWithGuard(int size) {
super(size);
}
synchronized public boolean isEmpty() {
return super.isEmpty();
}
synchronized public boolean isFull() {
return super.isFull();
}
synchronized public int getSize() {
return super.getSize();
}
synchronized public void push(Object obj) {
try {
while (isFull()) {
wait();
}
} catch (InterruptedException e) {}
super.push(obj);
COS2144/102
11
notify();
}
synchronized public Object pop() {
try {
while (isEmpty()) {
wait();
}
} catch (InterruptedException e) {}
Object result = super.pop();
notify();
return result;
}
public static void main(String args[]) {
StackWithGuard stack = new StackWithGuard(5);
new Producer(stack, 15).start();
new Consumer(stack, 15).start();
}
}
Note: The Stack class is provided in the Appendix.
Note also: The following questions all refer to the pop()
method of the StackWithGuard
class given above.
7.1 What does the synchronized keyword ensure for this
method? (2)
7.2 Why is a while loop used to test whether the stack is
empty? In other words, why
wouldn't the following if statement be sufficient?
if (isEmpty()) {
wait();
}
(2)
7.3 Why is the result of popping (provided by the inherited
pop() method) stored in a
temporary variable? In other words, why wouldn't the
following statement be
sufficient?
return super.pop();
(2)
7.4 Why is the while loop placed in a try-catch structure?
(2)
Appendix
The LinkedQueue class:
public class LinkedQueue implements Queue {
private Node first, last;
private int count;
public LinkedQueue() {
first = last = null;
count =0;
}
public int size() {
return count;
}
public boolean isEmpty() {
return (count == 0);
12
}
public void enqueue(Object o) {
Node node = new Node();
node.element = o;
node.next = null;
node.prev = last;
if (last != null){
last.next = node;
}
else {
last = first = node;
}
last = node;
count++;
}
public void dequeue() {
if ((first!= null) & (first.next!=null)) {
first = first.next;
first.prev = null;
count--;
}
else {
first = last = null;
count--;
}
}
public Object front() {
return first;
}
}
class Node {
Object element;
Node next, prev;
}
The Stack class:
public class Stack {
protected Object rep[];
protected int top = -1;
protected int size = 0;
protected int count = 0;
public Stack(int size) {
if (size > 0) {
this.size = size;
rep = new Object[size];
}
}
public boolean isFull() {
return (count == size);
}
public boolean isEmpty() {
return (count == 0);
}
public int getSize() {
return size;
}
public void push(Object e) {
if (e != null && !isFull()) {
COS2144/102
13
top++;
rep[top] = e;
count ++;
}
}
public Object pop() {
Object result = null;
if (!isEmpty()) {
result = rep[top];
top--;
count--;
}
return result;
}
}