PDA

Visualizza la versione completa : [java] Arrays.sort


escaria
10-02-2004, 00:38
sto tentando di usare il metodo sort(Object o)

il mio array fatto di oggetti Prodotto , l'oggetto Prodotto implementa l'interfaccia Comparable, dovrebbe essere tutto giusto ma quando chiamo Arrays.sort(elenco); mi da

java.lang.NullPointerException
at java.util.Arrays.mergeSort(Arrays.java:1152)
at java.util.Arrays.sort(Arrays.java:1079)
at pietro_cottafavi.<init>(pietro_cottafavi.java:57)
at ProvaConsuntivo.main(ProvaConsuntivo.java:17)
Exception in thread "main"


mi sapete dire dove sbaglio ??

grazie, ciao ;)

Angelo1974
10-02-2004, 09:17
Ciao. Mi pare che come se tu non istanziassi elenco; ( scusami la domanda stupida :tongue: ) prima di fare Arrays.sort( elenco ); da qualche parte fai una cosa del tipo: Prodotto[] elenco = new Prodotto[10] ( ad esempio ), e cio crei effettivamente l'array di Prodotto? Perch se non lo fai l'errore dovuto a ci

escaria
10-02-2004, 09:49
si l'array lo creo infatti non riesco a capire dove sia l'errore :(

escaria
10-02-2004, 09:59
penso di aver capito.... il mio array ha l'indice 0 = null :dh:

grazie comunque , CIao :)

escaria
10-02-2004, 11:13
adesso non da errori ma non ordina in ordine alfabetico come vorrei e non riesco a capire come li ordini esattamente...


import java.util.*;
class Prodotto implements Comparable {

public final String nomeProd;
private int numPezzi;
private double saldo;
/** Creates a new instance of Prodotto */
public Prodotto(String prodotto, double prezzo_unitario, int num_pezzi) {
nomeProd = prodotto;
numPezzi = num_pezzi;
saldo = prezzo_unitario*num_pezzi;
}

public String toString()
{
return nomeProd+" "+saldo+" "+numPezzi;
}

public int compareTo(Object o) {
return nomeProd.compareTo(((Prodotto)o).nomeProd);
}

public static void main(String[] args)
{
Prodotto[] arTest = new Prodotto[3];
arTest[0] = new Prodotto("ac", 1.2, 2);
arTest[1] = new Prodotto("z", 1.2, 2);
arTest[2] = new Prodotto("B", 1.2, 2);

Arrays.sort(arTest, 0, 2);

for(int i = 0; i < arTest.length; i++)
{
System.out.println(arTest[i]);
}
}

}

escaria
10-02-2004, 11:48
risolto , bisogn mettere come terzo parametro del metodo sort la lunghezza dell'array

Arrays.sort(arTest, 0, arTest.length);

Loading