linkedList problem

I cannot seem to print my link list out while traversing it... nothing comes up

Driver Class

import java.util.Scanner;

publicclass Driver{

publicstaticvoid main(String[] args){

System.out.println("[Address Book - Stores Names and Numbers]");

System.out.println("1. Add Name and Number");

System.out.println("2. Delete Contact");

System.out.println("3. Search for Contact");

System.out.println("4. Print Phone Book");

System.out.println("5. Exit");

Scanner keyboard =new Scanner(System.in);

Scanner data =new Scanner(System.in);

int input = keyboard.nextInt();

while((input < 6)&&(input > 0))

{

if(input == 1)

{

System.out.println("Enter Full Name: ");

String name = data.next();

System.out.println("Enter Phone Number: ");

String phoneNum = data.next();

System.out.println("Data Entered!");

PhoneNumber ph =new PhoneNumber(name, phoneNum);

ph.setName(name);

ph.setPhoneNum(phoneNum);

Driver.main(args);

}

elseif(input == 2)

{

System.out.print("Enter Full Name To Delete Contact: ");

String name = data.next();

Driver.main(args);

}

elseif(input == 3)

{

System.out.print("Enter Full Name To Search Contact: ");

String name = data.next();

DoubleLink db =new DoubleLink();

db.retrieve(name);

Driver.main(args);

}

elseif(input == 4)

{

System.out.print("[Phone Book List]");

DoubleLink db =new DoubleLink();

db.traverse();

Driver.main(args);

}

elseif(input == 5)

{

System.exit(0);

}

}

System.out.print("Please Enter a Number 1 to 4: ");

Driver.main(args);

}//main

}//Driver

DoubleLink Class

publicclass DoubleLink

{

private DoubleLink next;

private DoubleLink prev;

private DoubleLink head;

private DoubleLink tail;

private NodeData data;

//Main constructor

DoubleLink()

{

next =null;

prev =null;

tail =null;

head =null;

}

publicvoid addInfo(String name, String phoneNum)

{

DoubleLink newNode =new DoubleLink();

next =null;

prev =null;

if(head !=null)

{

newNode.next = head;

head.prev = newNode;

head = newNode;

}

else

{

head = tail = newNode;

}

}

public NodeData retrieve(String name)

{

DoubleLink current = head;

while(current !=null)

{

// if(current.data == name)

// return data;

current = current.next;

}

returnnull;

}

publicvoid traverse()

{

DoubleLink current = head;

while(current !=null)

{

System.out.print(current.next);

current = current.next;

}

}

publicboolean delPhoneNum(String name)

{

DoubleLink current = head;

DoubleLink prev =null;

while(current !=null)

{

if(current.data == name)

{

prev.next = current.next;

returntrue;

}

prev = current;

current = current.next;

}

returnfalse;

}

}//DoubleLink

PhoneNumber class

publicclass PhoneNumberimplements InterfaceShell{

private String name;

private String phoneNum;

private Object data;

public PhoneNumber(String name, String phoneNum)

{

this.name = name;

this.phoneNum = phoneNum;

}

publicvoid setName(String name){

this.name = name;

}

publicvoid setPhoneNum(String phoneNum){

this.phoneNum = phoneNum;

}

public String getPhoneNum(){

return phoneNum;

}

public String getName(){

return name;

}

publicvoid print()

{

System.out.println("Name: "+getName()+" Phone: "+ getPhoneNum());

}

//unimplemented methods

publicvoid addInfo(String name, String phoneNum){

PhoneNumber data =new PhoneNumber(name, phoneNum);

data.addInfo(name, phoneNum);

}

publicvoid delPhoneNum(String name, String phoneNum){

}

public Object traverse(String name, String phoneNum){

return (String) data;

}

public String retrieve(String name){

// TODO Auto-generated method stub

return name;

}

}

NodeData class

publicclass NodeData{

private PhoneNumber data;

private DoubleLink prev;

private DoubleLink next;

public NodeData(String name, String phoneNum)

{

data=new PhoneNumber(name, phoneNum);

prev=null;

next=null;

}

public PhoneNumber getData()

{

return data;

}

public DoubleLink getNext()

{

return next;

}

public DoubleLink getPrev()

{

return prev;

}

publicvoid setNext (DoubleLink nextInfo)

{

next=nextInfo;

}

publicvoid setPrev(DoubleLink prevInfo)

{

prev=prevInfo;

}

}

Interface

publicinterface InterfaceShell

{

publicvoid addInfo(String phoneNum, String name);

publicvoid delPhoneNum(String phoneNum, String name);

public Object traverse(String phoneNum, String name);

public String retrieve(String name);

}

[11909 byte] By [mantai007a] at [2007-10-3 3:35:46]
# 1

else if(input == 4)

{

System.out.print("[Phone Book List]");

DoubleLink db = new DoubleLink();

db.traverse();

Driver.main(args);

}

Here you create a new database, and traverse it. Nothing will show up

because there is nothing in the new database.

Perhaps you need to create the database outside the while-loop. Inside the

loop you can add, delete, search and list the entries.

On another matter: I don't think it is really a good idea to call main()

recursively the way you do.

pbrockway2a at 2007-7-14 21:30:34 > top of Java-index,Java Essentials,Java Programming...
# 2

i created a new data object containing (name & phoneNum)... when i pressed "1", which fills it up with data.

so when i press 4 it should call the constructor which has the filled data..

em whats the other way around to calling main. because it shud goto the top of the list once u finished with the option u pressed.

mantai007a at 2007-7-14 21:30:34 > top of Java-index,Java Essentials,Java Programming...
# 3

> whats the other way around to calling main.

An alternative is to prompt inside the while loop. In pseudocode it might look

like:

while(true) {

prompt

get input

if(exit wanted) break;

process input

}prompt and get input should probably be in methods of their own.

Consider using a switch for process input. Each of the case parts could use

its own method.

pbrockway2a at 2007-7-14 21:30:34 > top of Java-index,Java Essentials,Java Programming...
# 4
so do u make a reference to another class. like using another method in another class...
mantai007a at 2007-7-14 21:30:34 > top of Java-index,Java Essentials,Java Programming...
# 5

> so do u make a reference to another class. like using another method in

> another class...

No, prompt() and getInput() could be static methods of the Driver class.

If this is confusing, ignore it as it's somewhat beside the point. Your question

was how to avoid calling main() but still get the program to repeat the menu

when it's finished processing a particaular option. And the answer is to

place the menu inside the loop.

pbrockway2a at 2007-7-14 21:30:34 > top of Java-index,Java Essentials,Java Programming...
# 6
b
time_bikasha at 2007-7-14 21:30:34 > top of Java-index,Java Essentials,Java Programming...
# 7

ok i get the idea...

problem im having is matching a String against an object that contains 2 strings inside it...

but there is no contains methids.

so is there a way to check an object that contains a string

public NodeData retrieve(String name)

{

DoubleLink current = head;

while(current !=null)

{

if(current.data.equals(name))

return data;

current = current.next;

}

return null;

}

mantai007a at 2007-7-14 21:30:34 > top of Java-index,Java Essentials,Java Programming...