|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Mar 2004
Città: castel san giorgio(salerno)
Messaggi: 1218
|
problemi in java
Perchè m lancia la NullPointrException?
L'unica cosa ke scrive è "la lista ha x elementi". Poi l'eccezione "java.lang.NullPointerException at implementazione_di_uno_stack.classe_testante.main(classe_testante.java:124)" Queste sono le 3 classi: si tratta di implementare una lista concatenata: public class classe_testante { public static void main(String[] args) { LinkList lista = new LinkList(); //Crea nuova lista Link head = new Link(); //Crea il primo nodo della lista Link tail = new Link(); //Crea l'ultimo nodo della lista String num_oggetti_input_lista = JOptionPane.showInputDialog("Oggetti da inserire nella lista?"); int num_oggetti_lista = Integer.parseInt(num_oggetti_input_lista); for (int i=0; i < num_oggetti_lista; i++) { String oggetto_inserito_input = JOptionPane.showInputDialog("Inserisci l'elemento successivo"); Object o = oggetto_inserito_input; lista.insertFirst(o, lista.head); //Inserisce tutti i link inseriti dall'utente } System.out.println("La lista ha " + lista.size() + " elementi"); System.out.println("L'elemento nell'head è " + lista.head.getElement()); Link temp = lista.head.getNext(); System.out.println("e il suo successore ha come elemento " + temp.getElement() + "l'ultimo ha come elemento " + lista.tail.getElement()); lista.head.setElement("ADRIANO"); System.out.println("L'elemento del primo nodo è stato sostituito con" + lista.head.getElement()); lista.head.setNext(tail); System.out.println("Il Next del primo nodo è stato sostituito con l'ultimo che ha come elemento:" + lista.tail.getElement()); if(lista.isEmpty()) System.out.println("lista vuota"); else { System.out.println("lista non vuota"); System.out.println("Ora ci sono " + lista.size() + " elementi in lista");} lista.insertLast("sono l'ultimo x default"); System.out.println("E'stato inserito l'ultimo x default che è:" + lista.tail.getElement()); lista.deleteLast(); System.out.println("L'ultimo è di nuovo:" + lista.tail.getElement()); //vengono usati tutti i metodi System.exit(0); } } public class LinkList { public Link head; // riferimento al primo link della lista public Link tail; // riferimento all'ultimo link della lista public int size = 0; //la taglia della lista all'inizio è 0 public Link temp; public void LinkList() { head = null; tail = null; // ancora nessun link nella lista } public boolean isEmpty() //verifica se la lista è vuota o meno { return (head == null); } public void insertFirst(Object e, Link head) // inserimento all'inizio della lista { Link newLink = new Link(e, head); head = newLink; if (tail == null){tail = newLink;} tail = head; size ++; } public Link deleteFirst() throws StackEmptyException // cancellazione all'inizio della lista { if(isEmpty()) { throw new StackEmptyException("no"); } if(head == tail) { Link temp = head; head = tail = null; size --; return temp; } else { Link temp = head; head = head.next;} size--; return temp; } public int size() //restituisce il numero di link nella lista { return size; } public void insertLast(Object e) //inserimento alla fine { Link newLink = new Link(e, null); if( tail!= null ) { tail.next = newLink; tail = tail.next; } else {head = tail = newLink;} size ++; } public void deleteLast() throws StackEmptyException //cancellazione alla fine { if(isEmpty()){throw new StackEmptyException("no");} else if(head == tail){ head = tail = null; size --;} else { Link current = head; Link temp = tail; while(current.next != tail){ current = current.next; } tail = current; current.next = null; temp = null; size --; } } } class Link { public Object element; public Link next; public Link (Object e, Link n) //Ogni link ha un elemento e un puntatore al prossimo link { element = e; next = n; } public Link () { this(null, null); } public Object getElement() //Restituisce l'elemento del link { return element; } public Link getNext() //Restituisce il link successivo { return next; } public void setElement(Object newElement) //Imposta un nuovo elemento al posto di quello precedente { element = newElement; } public void setNext(Link newNext) //Imposta un nuovo link successivo al posto di quello ke c'era prima { next = newNext; } } |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 05:18.