Hey again. Trying to add elements to a DList, this happens when I try to add the second car (500, Porsche). The whole insert algorithm sucks and am strongly considering trying to figure out a better one.

This is what shows up in the console:

Enter name of file with test date:
list
Expecting 8 vehicles to process.
-----
Reading data from file and inserting...
New vehicle to process: BMW M
Exception in thread "main" java.lang.NullPointerException
at DList.addAfter(DList.java:79)
at OrderedList.insert(OrderedList.java:43)
at TestOrderedList.main(TestOrderedList.java:36)

Here is all of my source code.

/**
 * 
 * @author Harry Luthi
 * @work Assignment 1
 * 
 */

public class Vehicle
{
	private int vin;
	private String d;
	  // static String d, else main will return "null"
	  // for vehicle's description when tested.
	
	public Vehicle(int x, String d) 
	{
		vin = x;
		this.d = d;
	}
	
	// toString
	public String toString()
	{
		return "VIN: " + vin + ". " + "Description: " + d + "\n";
	}
	
	// Accessors and modifiers
	public int getVin()
	{
		return vin;
	}
	
	public String getDescription() 
	{
		return d;
	}
}

public class OrderedList
{	
	private int vin;
	int pos;
	private int count;
	private DList dlist;
	private DNode dnode;
	private Vehicle newElem;
	private DNode next;
	private DNode prevID;
	
	public int getCount()
	{
		return count;
	}
	
	public OrderedList()
	{
		count = 0;
	}
	
	public void insert(DNode v)		// Insert vehicle to list
	{	
		DList list = new DList();
		dnode = v;
		Vehicle vehic = v.getElement();
		
		if(count == 0)
		{
			v.setElement(vehic);
			v.setNext(null);
			v.setPrev(null);
			list.addFirst(v);
			count++;
			return;
		}
		else 
		{	
			DNode w = v.getNext();	
			v.setElement(vehic);
			v.setNext(null);
			v.setPrev(w);
			list.addAfter(v, v);
			count++;
			return;
		}
	}

	public void display()
	{
		String s = "";
		for (int i=0; i<count; i++)
			s = s+dlist;
		System.out.println(s);
	}
	
//	boolean find(DNode v)		// Find Vehicle in list
//	{
//		
//	}
//	
//	
//	public void remove(int vin)
//	{
//		
//	}
//	
//	
//	public Vehicle retrieve(int vin)
//	{
//		
//	}
//	
}

import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;

class TestOrderedList
{
	public static void main(String[] args) throws FileNotFoundException {
		
		System.out.println("Running test driver...");
		System.out.println("Enter name of file with test date: ");
		Scanner scan = new Scanner(System.in);
		String fileName = scan.nextLine();
		
		File inputFile = new File(fileName);
		Scanner inFile = new Scanner(inputFile);
		int count = 8;
		System.out.println("Expecting " + count + " vehicles to process.");
		OrderedList ol = new OrderedList();
		System.out.println("-----");
		System.out.println("Reading data from file and inserting...");
		for(int i=0; i<count; i++)
		{
			int vin = inFile.nextInt();
			String d = inFile.nextLine();
			
			Vehicle v1 = new Vehicle(386, "BMW");
			DNode t1 = new DNode (v1, null, null);
			
			Vehicle v2 = new Vehicle(500, "Porsche");
			DNode t2 = new DNode(v2, t1, null);
			
			OrderedList list = new OrderedList();
			System.out.println("New vehicle to process: " + d);
	        
			list.insert(t1);
			list.insert(t2);

//			for (int j=0; j<count; j++)
//			{
//				list.addFirst(t1);
//				list.addAfter(t1, t2);
//			}

			
			System.out.println("Verify it was added to list.");
			ol.display();
			System.out.print("-- end of display -- \n\n");
		}
		System.out.println("-------");
	}
}


/** Doubly linked list with nodes of type DNode storing strings. 
 *  Code by Goodrich and Tamassia, Data Structurs and Algorithms, 5th edition
 * */

public class DList 
{
	protected int size;			// number of elements
	protected DNode header, trailer;	// sentinels

	/** Constructor that creates an empty list */
	public DList()
	{
		size = 0;
		header = new DNode(null, null, null);	// create header
		trailer = new DNode(null, header, null);	// create trailer
		header.setNext(trailer);	// make header and trailer point to each other
	}
		  
	/** Returns the number of elements in the list */
	public int size() { return size; }
	
	/** Returns whether the list is empty */
	public boolean isEmpty() { return (size == 0); }

	/** Returns the first node of the list */
	public DNode getFirst() throws IllegalStateException 
	{
	    if (isEmpty()) throw new IllegalStateException("List is empty");
	    return header.getNext();
	}
  
	/** Returns the last node of the list */
	public DNode getLast() throws IllegalStateException 
	{
		if (isEmpty()) throw new IllegalStateException("List is empty");
		return trailer.getPrev();
	}
	
	/** Returns the node before the given node v. An error occurs if v
	* is the header 
	*/
	public DNode getPrev(DNode v) throws IllegalArgumentException 
	{
		if (v == header) throw new IllegalArgumentException("Cannot move back past the header of the list");
		return v.getPrev();
	}
  
	/** Returns the node after the given node v. An error occurs if v
	* is the trailer 
	*/
	public DNode getNext(DNode v) throws IllegalArgumentException 
	{
		if (v == trailer) throw new IllegalArgumentException("Cannot move forward past the trailer of the list");
		return v.getNext();
	}
  
	/** Inserts the given node z before the given node v. An error
	* occurs if v is the header 
	*/
	public void addBefore(DNode v, DNode z) throws IllegalArgumentException 
	{
		DNode u = getPrev(v);	// may throw an IllegalArgumentException
		z.setPrev(u);
		z.setNext(v);
		v.setPrev(z);
		u.setNext(z);
	  	size++;
	}
  
	/** Inserts the given node z after the given node v. An error occurs
	 * if v is the trailer 
	 */
	public void addAfter(DNode v, DNode z) 
	{
		DNode w = getNext(v);	// may throw an IllegalArgumentException
		z.setPrev(v);
		z.setNext(w);
		w.setPrev(z);
	  	v.setNext(z);
	  	size++;
	}
  
	/** Inserts the given node at the head of the list */
	public void addFirst(DNode v) 
	{
		addAfter(header, v);
	}
  
	/** Inserts the given node at the tail of the list */
	public void addLast(DNode v) 
	{
		addBefore(trailer, v);
	}
  
	/** Removes the given node v from the list. An error occurs if v is
	 * the header or trailer 
	 */
	public void remove(DNode v) 
	{
		DNode u = getPrev(v);	// may throw an IllegalArgumentException
		DNode w = getNext(v);	// may throw an IllegalArgumentException
		// unlink the node from the list 
		w.setPrev(u);
		u.setNext(w);
		v.setPrev(null);
		v.setNext(null);
		size--;
	}
}

public class DNode 
{
	protected Vehicle element; 
	protected DNode next, prev;
	
	/** 
	 * Constructor that creates node with given fields
	 */
	public DNode (Vehicle v, DNode p, DNode n){
		element = v;
		prev = p;
		next = n;
	}
	
	/**
	 * Returns the element of this node
	 */
	public Vehicle getElement() { return element; }
	
	/**
	 * Returns the previous nosde of this node
	 */
	public DNode getPrev() { return prev; }
	
	/**
	 * Returns the next node 
	 */
	public DNode getNext() { return next; }
	
	/**
	 * sets the element of this node
	 */
	public void setElement(Vehicle newElem) { element = newElem; }
	
	/**
	 * sets the previous node of this node
	 */
	public void setPrev (DNode newPrev) { prev = newPrev; }
	
	/** 
	 * sets the next node of this node
	 */
	public void setNext (DNode newNext) { next = newNext; }

}

This is contents of the file called "list" that I am putting in after the prompt

1000 BMW M
300 Mercedes CLS
600 Ferarri Italia
100 Porsche Cayman RS
200 Lamborghini Gallardo TT
2500 Mazda Miata
50 Chevrolet Camaro SS
150 Ford Mustang GT

Edited 4 Years Ago by hbluthi: n/a

Hey again. Trying to add elements to a DList, this happens when I try to add the second car (500, Porsche). The whole insert algorithm sucks and am strongly considering trying to figure out a better one.

This is what shows up in the console:

Enter name of file with test date:
list
Expecting 8 vehicles to process.
-----
Reading data from file and inserting...
New vehicle to process: BMW M
Exception in thread "main" java.lang.NullPointerException
at DList.addAfter(DList.java:79)
at OrderedList.insert(OrderedList.java:43)
at TestOrderedList.main(TestOrderedList.java:36)

Here is all of my source code.

/**
 * 
 * @author Harry Luthi
 * @work Assignment 1
 * 
 */

public class Vehicle
{
	private int vin;
	private String d;
	  // static String d, else main will return "null"
	  // for vehicle's description when tested.
	
	public Vehicle(int x, String d) 
	{
		vin = x;
		this.d = d;
	}
	
	// toString
	public String toString()
	{
		return "VIN: " + vin + ". " + "Description: " + d + "\n";
	}
	
	// Accessors and modifiers
	public int getVin()
	{
		return vin;
	}
	
	public String getDescription() 
	{
		return d;
	}
}

public class OrderedList
{	
	private int vin;
	int pos;
	private int count;
	private DList dlist;
	private DNode dnode;
	private Vehicle newElem;
	private DNode next;
	private DNode prevID;
	
	public int getCount()
	{
		return count;
	}
	
	public OrderedList()
	{
		count = 0;
	}
	
	public void insert(DNode v)		// Insert vehicle to list
	{	
		DList list = new DList();
		dnode = v;
		Vehicle vehic = v.getElement();
		
		if(count == 0)
		{
			v.setElement(vehic);
			v.setNext(null);
			v.setPrev(null);
			list.addFirst(v);
			count++;
			return;
		}
		else 
		{	
			DNode w = v.getNext();	
			v.setElement(vehic);
			v.setNext(null);
			v.setPrev(w);
			list.addAfter(v, v);
			count++;
			return;
		}
	}

	public void display()
	{
		String s = "";
		for (int i=0; i<count; i++)
			s = s+dlist;
		System.out.println(s);
	}
	
//	boolean find(DNode v)		// Find Vehicle in list
//	{
//		
//	}
//	
//	
//	public void remove(int vin)
//	{
//		
//	}
//	
//	
//	public Vehicle retrieve(int vin)
//	{
//		
//	}
//	
}

import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;

class TestOrderedList
{
	public static void main(String[] args) throws FileNotFoundException {
		
		System.out.println("Running test driver...");
		System.out.println("Enter name of file with test date: ");
		Scanner scan = new Scanner(System.in);
		String fileName = scan.nextLine();
		
		File inputFile = new File(fileName);
		Scanner inFile = new Scanner(inputFile);
		int count = 8;
		System.out.println("Expecting " + count + " vehicles to process.");
		OrderedList ol = new OrderedList();
		System.out.println("-----");
		System.out.println("Reading data from file and inserting...");
		for(int i=0; i<count; i++)
		{
			int vin = inFile.nextInt();
			String d = inFile.nextLine();
			
			Vehicle v1 = new Vehicle(386, "BMW");
			DNode t1 = new DNode (v1, null, null);
			
			Vehicle v2 = new Vehicle(500, "Porsche");
			DNode t2 = new DNode(v2, t1, null);
			
			OrderedList list = new OrderedList();
			System.out.println("New vehicle to process: " + d);
	        
			list.insert(t1);
			list.insert(t2);

//			for (int j=0; j<count; j++)
//			{
//				list.addFirst(t1);
//				list.addAfter(t1, t2);
//			}

			
			System.out.println("Verify it was added to list.");
			ol.display();
			System.out.print("-- end of display -- \n\n");
		}
		System.out.println("-------");
	}
}


/** Doubly linked list with nodes of type DNode storing strings. 
 *  Code by Goodrich and Tamassia, Data Structurs and Algorithms, 5th edition
 * */

public class DList 
{
	protected int size;			// number of elements
	protected DNode header, trailer;	// sentinels

	/** Constructor that creates an empty list */
	public DList()
	{
		size = 0;
		header = new DNode(null, null, null);	// create header
		trailer = new DNode(null, header, null);	// create trailer
		header.setNext(trailer);	// make header and trailer point to each other
	}
		  
	/** Returns the number of elements in the list */
	public int size() { return size; }
	
	/** Returns whether the list is empty */
	public boolean isEmpty() { return (size == 0); }

	/** Returns the first node of the list */
	public DNode getFirst() throws IllegalStateException 
	{
	    if (isEmpty()) throw new IllegalStateException("List is empty");
	    return header.getNext();
	}
  
	/** Returns the last node of the list */
	public DNode getLast() throws IllegalStateException 
	{
		if (isEmpty()) throw new IllegalStateException("List is empty");
		return trailer.getPrev();
	}
	
	/** Returns the node before the given node v. An error occurs if v
	* is the header 
	*/
	public DNode getPrev(DNode v) throws IllegalArgumentException 
	{
		if (v == header) throw new IllegalArgumentException("Cannot move back past the header of the list");
		return v.getPrev();
	}
  
	/** Returns the node after the given node v. An error occurs if v
	* is the trailer 
	*/
	public DNode getNext(DNode v) throws IllegalArgumentException 
	{
		if (v == trailer) throw new IllegalArgumentException("Cannot move forward past the trailer of the list");
		return v.getNext();
	}
  
	/** Inserts the given node z before the given node v. An error
	* occurs if v is the header 
	*/
	public void addBefore(DNode v, DNode z) throws IllegalArgumentException 
	{
		DNode u = getPrev(v);	// may throw an IllegalArgumentException
		z.setPrev(u);
		z.setNext(v);
		v.setPrev(z);
		u.setNext(z);
	  	size++;
	}
  
	/** Inserts the given node z after the given node v. An error occurs
	 * if v is the trailer 
	 */
	public void addAfter(DNode v, DNode z) 
	{
		DNode w = getNext(v);	// may throw an IllegalArgumentException
		z.setPrev(v);
		z.setNext(w);
		w.setPrev(z);
	  	v.setNext(z);
	  	size++;
	}
  
	/** Inserts the given node at the head of the list */
	public void addFirst(DNode v) 
	{
		addAfter(header, v);
	}
  
	/** Inserts the given node at the tail of the list */
	public void addLast(DNode v) 
	{
		addBefore(trailer, v);
	}
  
	/** Removes the given node v from the list. An error occurs if v is
	 * the header or trailer 
	 */
	public void remove(DNode v) 
	{
		DNode u = getPrev(v);	// may throw an IllegalArgumentException
		DNode w = getNext(v);	// may throw an IllegalArgumentException
		// unlink the node from the list 
		w.setPrev(u);
		u.setNext(w);
		v.setPrev(null);
		v.setNext(null);
		size--;
	}
}

public class DNode 
{
	protected Vehicle element; 
	protected DNode next, prev;
	
	/** 
	 * Constructor that creates node with given fields
	 */
	public DNode (Vehicle v, DNode p, DNode n){
		element = v;
		prev = p;
		next = n;
	}
	
	/**
	 * Returns the element of this node
	 */
	public Vehicle getElement() { return element; }
	
	/**
	 * Returns the previous nosde of this node
	 */
	public DNode getPrev() { return prev; }
	
	/**
	 * Returns the next node 
	 */
	public DNode getNext() { return next; }
	
	/**
	 * sets the element of this node
	 */
	public void setElement(Vehicle newElem) { element = newElem; }
	
	/**
	 * sets the previous node of this node
	 */
	public void setPrev (DNode newPrev) { prev = newPrev; }
	
	/** 
	 * sets the next node of this node
	 */
	public void setNext (DNode newNext) { next = newNext; }

}

This is contents of the file called "list" that I am putting in after the prompt

1000 BMW M
300 Mercedes CLS
600 Ferarri Italia
100 Porsche Cayman RS
200 Lamborghini Gallardo TT
2500 Mazda Miata
50 Chevrolet Camaro SS
150 Ford Mustang GT

this might help :

public void addAfter(DNode v, DNode z) 
	{
		DNode w = getNext(v);	// may throw an IllegalArgumentException
		z.setPrev(v);
		z.setNext(w);
//		w.setPrev(z); //comment this here
	  	v.setNext(z);
	  	size++;
	}

my guess as to why that corrects the error is most likely due to code here in your insert(DNode v) method:

DNode w = v.getNext();
			v.setElement(vehic);
			v.setNext(null);
			v.setPrev(w);
			list.addAfter(v, v);
			count++;

Edited 4 Years Ago by DavidKroukamp: n/a

Thanks for the speedy reply. We must not make any changes to anything but OrderedList and TestOrderedList, unfortunately. So commenting that out would not be acceptable and would lead to a deduction on my points. Here is my updated error code:


Running test driver...
Enter name of file with test date:
list
Expecting 8 vehicles to process.
-----
Reading data from file and inserting...
Exception in thread "main" java.lang.NullPointerException
at DList.addAfter(DList.java:79)
at OrderedList.insert(OrderedList.java:41)
at TestOrderedList.main(TestOrderedList.java:28)
New vehicle to process: BMW M
Verify it was added to list.
DList@19b8e059
-- end of display --

New vehicle to process: Mercedes CLS


Here is updated source code.

/**
 * 
 * @author Harry Luthi
 * @work Assignment 1
 * 
 */

public class Vehicle
{
	private int vin;
	private String d;
	  // static String d, else main will return "null"
	  // for vehicle's description when tested.
	
	public Vehicle(int x, String d) 
	{
		vin = x;
		this.d = d;
	}
	
	// toString
	public String toString()
	{
		return "VIN: " + vin + ". " + "Description: " + d + "\n";
	}
	
	// Accessors and modifiers
	public int getVin()
	{
		return vin;
	}
	
	public String getDescription() 
	{
		return d;
	}
}

public class OrderedList
{	int pos;
	private int vin;
	private int count;
	private DList dlist;
	private DNode dnode;
	private DNode next;
	private DNode prevID;
	
	public int getCount()
	{
		return count;
	}
	
	public OrderedList()
	{
		count = 0;
	}
	
	public void insert(DNode v)		// Insert vehicle to list
	{	
		dlist = new DList();
		Vehicle vehic = v.getElement();
		dnode = v;
		if(count == 0)
		{
			v.setElement(vehic);
			v.setNext(null);
			v.setPrev(null);
			dlist.addFirst(v);
			count++;
			return;
		}
		else 
		{	
			DNode z = v;
			DNode w = v.getNext();	// Not same ID  mcauleyr's "ID" variable corresponding to VIN of vehicle
			z.setElement(vehic);
			z.setNext(null);
			z.setPrev(w);
			dlist.addAfter(v, z);
			count++;
			return;
		}
	}

	public void display()
	{
		String s = "";
		for (int i=0; i<count; i++)
			s = s+dlist;
		System.out.println(s);
	}
	
//	boolean find(DNode v)		// Find Vehicle in list
//	{
//		
//	}
//	
//	
//	public void remove(int vin)
//	{
//		
//	}
//	
//	
//	public Vehicle retrieve(int vin)
//	{
//		
//	}
//	
}

import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;

class TestOrderedList
{
	public static void main(String[] args) throws FileNotFoundException {
		
		System.out.println("Running test driver...");
		System.out.println("Enter name of file with test date: ");
		Scanner scan = new Scanner(System.in);
		String fileName = scan.nextLine();
		
		File inputFile = new File(fileName);
		Scanner inFile = new Scanner(inputFile);
		int count = 8;
		System.out.println("Expecting " + count + " vehicles to process.");
		OrderedList ol = new OrderedList();
		System.out.println("-----");
		System.out.println("Reading data from file and inserting...");
		for(int i=0; i<count; i++)
		{
			int vin = inFile.nextInt();
			String d = inFile.nextLine();
			Vehicle v = new Vehicle(vin, d);
			DNode t = new DNode (v, null, null);
			System.out.println("New vehicle to process: " + d);
	                ol.insert(t);
			System.out.println("Verify it was added to list.");
			ol.display();
			System.out.print("-- end of display -- \n\n");
		}
		System.out.println("-------");
	}
}


/** Doubly linked list with nodes of type DNode storing strings. 
 *  Code by Goodrich and Tamassia, Data Structurs and Algorithms, 5th edition
 * */

public class DList 
{
	protected int size;			// number of elements
	protected DNode header, trailer;	// sentinels

	/** Constructor that creates an empty list */
	public DList()
	{
		size = 0;
		header = new DNode(null, null, null);	// create header
		trailer = new DNode(null, header, null);	// create trailer
		header.setNext(trailer);	// make header and trailer point to each other
	}
		  
	/** Returns the number of elements in the list */
	public int size() { return size; }
	
	/** Returns whether the list is empty */
	public boolean isEmpty() { return (size == 0); }

	/** Returns the first node of the list */
	public DNode getFirst() throws IllegalStateException 
	{
	    if (isEmpty()) throw new IllegalStateException("List is empty");
	    return header.getNext();
	}
  
	/** Returns the last node of the list */
	public DNode getLast() throws IllegalStateException 
	{
		if (isEmpty()) throw new IllegalStateException("List is empty");
		return trailer.getPrev();
	}
	
	/** Returns the node before the given node v. An error occurs if v
	* is the header 
	*/
	public DNode getPrev(DNode v) throws IllegalArgumentException 
	{
		if (v == header) throw new IllegalArgumentException("Cannot move back past the header of the list");
		return v.getPrev();
	}
  
	/** Returns the node after the given node v. An error occurs if v
	* is the trailer 
	*/
	public DNode getNext(DNode v) throws IllegalArgumentException 
	{
		if (v == trailer) throw new IllegalArgumentException("Cannot move forward past the trailer of the list");
		return v.getNext();
	}
  
	/** Inserts the given node z before the given node v. An error
	* occurs if v is the header 
	*/
	public void addBefore(DNode v, DNode z) throws IllegalArgumentException 
	{
		DNode u = getPrev(v);	// may throw an IllegalArgumentException
		z.setPrev(u);
		z.setNext(v);
		v.setPrev(z);
		u.setNext(z);
	  	size++;
	}
  
	/** Inserts the given node z after the given node v. An error occurs
	 * if v is the trailer 
	 */
	public void addAfter(DNode v, DNode z) 
	{
		DNode w = getNext(v);	// may throw an IllegalArgumentException
		z.setPrev(v);
		z.setNext(w);
		w.setPrev(z);
	  	v.setNext(z);
	  	size++;
	}
  
	/** Inserts the given node at the head of the list */
	public void addFirst(DNode v) 
	{
		addAfter(header, v);
	}
  
	/** Inserts the given node at the tail of the list */
	public void addLast(DNode v) 
	{
		addBefore(trailer, v);
	}
  
	/** Removes the given node v from the list. An error occurs if v is
	 * the header or trailer 
	 */
	public void remove(DNode v) 
	{
		DNode u = getPrev(v);	// may throw an IllegalArgumentException
		DNode w = getNext(v);	// may throw an IllegalArgumentException
		// unlink the node from the list 
		w.setPrev(u);
		u.setNext(w);
		v.setPrev(null);
		v.setNext(null);
		size--;
	}
}

public class DNode 
{
	protected Vehicle element; 
	protected DNode next, prev;
	
	/** 
	 * Constructor that creates node with given fields
	 */
	public DNode (Vehicle v, DNode p, DNode n){
		element = v;
		prev = p;
		next = n;
	}
	
	/**
	 * Returns the element of this node
	 */
	public Vehicle getElement() { return element; }
	
	/**
	 * Returns the previous nosde of this node
	 */
	public DNode getPrev() { return prev; }
	
	/**
	 * Returns the next node 
	 */
	public DNode getNext() { return next; }
	
	/**
	 * sets the element of this node
	 */
	public void setElement(Vehicle newElem) { element = newElem; }
	
	/**
	 * sets the previous node of this node
	 */
	public void setPrev (DNode newPrev) { prev = newPrev; }
	
	/** 
	 * sets the next node of this node
	 */
	public void setNext (DNode newNext) { next = newNext; }

}

This is contents of the file called "list" that I am putting in after the prompt

1000 BMW M
300 Mercedes CLS
600 Ferarri Italia
100 Porsche Cayman RS
200 Lamborghini Gallardo TT
2500 Mazda Miata
50 Chevrolet Camaro SS
150 Ford Mustang GT

Also, I can't get my display() method to work correctly and it needs a re-code. What information would help get me going on that?

try this in the dlist class:

public void addAfter(DNode v, DNode z) 
	{
		DNode w = getNext(v);	// may throw an IllegalArgumentException
		z.setPrev(v);
		z.setNext(w);
		//w.setPrev(z);
	  	v.setNext(z);
	  	size++;
	}

Check out my post above ;)

Can't modify DList or DNode classes. I'll try it just to see what happens though.


This may help, let w be the node following v

Edited 4 Years Ago by hbluthi: n/a

Here is the result in the console. How do I get them to display strings and not memory locations? Do I need a toString() method? I tried to make some in various places but to no avail.


Running test driver...
Enter name of file with test date:
list
Expecting 8 vehicles to process.
-----
Reading data from file and inserting...
New vehicle to process: BMW M
Verify it was added to list.
DNode@6791d8c1
-- end of display --

New vehicle to process: Mercedes CLS
Verify it was added to list.
DNode@182d9c06DNode@182d9c06
-- end of display --

New vehicle to process: Ferarri Italia
Verify it was added to list.
DNode@5a5e5a50DNode@5a5e5a50DNode@5a5e5a50
-- end of display --

New vehicle to process: Porsche Cayman RS
Verify it was added to list.
DNode@687b6889DNode@687b6889DNode@687b6889DNode@687b6889
-- end of display --

New vehicle to process: Lamborghini Gallardo TT
Verify it was added to list.
DNode@7e0c2ff5DNode@7e0c2ff5DNode@7e0c2ff5DNode@7e0c2ff5DNode@7e0c2ff5
-- end of display --

New vehicle to process: Mazda Miata
Verify it was added to list.
DNode@5220be79DNode@5220be79DNode@5220be79DNode@5220be79DNode@5220be79DNode@5220be79
-- end of display --

New vehicle to process: Chevrolet Camaro SS
Verify it was added to list.
DNode@63b9240eDNode@63b9240eDNode@63b9240eDNode@63b9240eDNode@63b9240eDNode@63b9240eDNode@63b9240e
-- end of display --

New vehicle to process: Ford Mustang GT
Verify it was added to list.
DNode@fee4648DNode@fee4648DNode@fee4648DNode@fee4648DNode@fee4648DNode@fee4648DNode@fee4648DNode@fee4648
-- end of display --

-------

Edited 4 Years Ago by hbluthi: n/a

Check out my post above ;)

Can't modify DList or DNode classes. I'll try it just to see what happens though.

oops sorry read like an idiot :)

Edited 4 Years Ago by DavidKroukamp: n/a

well you could try this:

public void display()
	{
		if(count==1) {
                      System.out.println(dlist.getFirst().element);//this count ==1 checks if its the first time if we dont do this null will be shown for the first input from file which is the BMW
                 } else {
		System.out.println(dlist.getNext(dnode).element);
                 }
	}

Edited 4 Years Ago by DavidKroukamp: n/a

Check out what I did as you must have been posting that above.

public void display()
	{
		System.out.println(dlist.toString());
	}

And in DList, I added the toString() method:

public String toString()
	{
		String s = "";
		DNode v = header.getNext();
		while (v != trailer)
		{
			s += v.getElement();
			v = v.getNext();
			if (v != trailer)
				s += ",";
		}
		s += "";
		return s;
	}
This article has been dead for over six months. Start a new discussion instead.