Stò cercando di imparare Java ed ho utilizzato un esempio portato in un tutorial in fase di compilazione tutto bene ma in fase di esecuzione (utilizzo NetBeans 3.6) mi da il seguente errore:
Java.lang.InstantiationError: VettoreOrdinato
at Test.Ordinamento2.main(testOrdinamento2.java:9)
Exception in thread "main"
Ecco il codice.
Mi potreste aiutare a risolvere il problema.
Grazie
codice:
interface Ordinabile
{
public boolean maggioreDi (Ordinabile o);
}
class TestOrdinamento2
{
public static void main (String argv[]) {
VettoreOrdinato vo = new VettoreOrdinato (10);
vo.aggiungi (new Punto(30,40));
vo.aggiungi (new Punto(300,400));
vo.aggiungi (new Punto(3,4));
vo.ordina();
for (int i = 0; i < vo.elementi(); i++)
System.out.println(((Punto)(vo.leggi (i))).distanza());
}
}
class VettoreOrdinato
{
private Ordinabile vettore[];
private int maxElementi;
private int curElementi;
public VettoreOrdinato (int maxElementi) {
this.maxElementi = maxElementi;
vettore = new Ordinabile[maxElementi];
curElementi = 0;
}
public boolean aggiungi (Ordinabile elemento) {
if (elemento != null && curElementi < maxElementi) {
vettore[curElementi++] = elemento;
return true;
} else
return false;
}
public Ordinabile leggi (int indice) {
if (indice >= 0 && indice < curElementi)
return (vettore[indice]);
else
return null;
}
public int maxElementi () { return maxElementi; }
public int elementi () { return curElementi; }
public void ordina () {
int s, i, j, num;
Ordinabile temp;
num = curElementi;
for (s = num / 2; s > 0; s /= 2)
for (i = s; i < num; i++)
for (j = i - s; j >= 0; j -= s)
if (vettore[j].maggioreDi (vettore[j + s])) {
temp = vettore[j];
vettore[j] = vettore[j + s];
vettore[j + s] = temp;
}
}
}
class Punto implements Ordinabile
{
int x;
int y;
public Punto (int x, int y) {
this.x = x;
this.y = y;
}
int leggiX() {
return x;
}
int leggiY() {
return y;
}
int distanza() {
return (int) Math.sqrt(x * x + y * y);
}
public boolean maggioreDi (Ordinabile o) {
if (o instanceof Punto)
return distanza() > ((Punto) o).distanza();
else
return false;
}
}