Ciao a tutti, sono alle prime armi con la programmazione in java..e tra un po' proverò a sostenere l'esame. all'università.. Programmare non mi è mai piaciuto, ma bisogna farlo..Il programma che posto qui è quindi, probabilmente, per molti di voi molto semplice..supera la fase di compilazione ma mi dà poi un errore in esecuzione..Potreste aiutarmi a risolvere il problema? Grazie
import java.util.Scanner;
interface CO
{ int size();
boolean isEmpty();
void enqueue(Comparable x);
Comparable dequeue();
void sort();
}
class MyCO implements CO
{ private Comparable[] v ;
private int vsize;
private int primo;
private int ultimo;
public MyCO()
{ Comparable[] v = new Comparable[1];
vsize = 0;
primo = 0;
ultimo = v.length-1;
}
public int size()
{ return vsize; }
public boolean isEmpty()
{ return (vsize==0); }
public void enqueue(Comparable x)
{ if ( x == null)
throw new IllegalArgumentException();
Comparable[] newv = new Comparable[vsize*2];
if (vsize == v.length) RIGA 34
System.arraycopy(v, 0, newv, 0, vsize);
newv = v;
v[ultimo] = x;
ultimo++;
vsize++;
}
public Comparable dequeue()
{ if (vsize == 0)
throw new IllegalArgumentException();
Comparable rem = v[primo];
vsize--;
return rem;
}
public void sort()
{ Comparable[] t = new Comparable[vsize];
for ( int i = 0; i<v.length; i++)
{ int minimo = i;
for ( int j = i+1; j<v.length; j++)
if (v[minimo].compareTo(v[j]) >0)
minimo = j;
Comparable temp = v[minimo];
v[minimo] = v;
v = temp;
}
}
}
/* Scrivere una classe Main.java di prova che:
– crei due esemplari della classe MiaCO di nome uno e due
– legga dall'ingresso standard una sequenza di numeri interi
in ordine casuale (un dato per riga), li
inserisca sia nella coda uno che nella coda due. Esegua 5 (cinque)
operazioni di dequeue() sulla coda uno, ordini la coda e la vuoti
trasferendone il contenuto sull'uscita standard (un dato per riga, i dati d
ovranno risultare ordinati), trasferisca sull'uscita standard una riga vuota
e vuoti la coda due trasferendo i dati sull'uscita standard, uno per riga.
In questo caso i dati in uscita dovranno essere nello stesso ordine dei dati in ingresso
*/
public class Main
{ public static void main (String[] args)
{ MyCO uno = new MyCO();
MyCO due = new MyCO();
Scanner c = new Scanner (System.in);
while (c.hasNext())
{ Integer w = new Integer(c.nextLine());
uno.enqueue(w); RIGA 84
due.enqueue(w);
}
uno.dequeue();
uno.dequeue();
uno.dequeue();
uno.dequeue();
uno.dequeue();
uno.sort();
while (!uno.isEmpty())
System.out.println(uno.dequeue());
System.out.println();
while (!due.isEmpty())
System.out.println(due.dequeue());
}
}
L'errore lanciato è
Exception in thread "main" java.lang.NullPointerException
at MyCO.enqueue(Main.java:34)
at Main.main (Main.java:84)
Evidenzio nel codice le righe..se qualcuno può aiutarmi..la maggior parte dei programmi che scrivo superano la compilazione ma poi mi viene sempre fuori questo errore..cosa sbaglio??non riesco a capire cosa non sia inizializzato..