Ecco un nuovo quesito per voi maghi della programmazione java.
Quello che voglio fare oggi è ordinare un esemplare di Coin[] utilizzando una classe che implementa Comparator.
A parte il javadoc scritto un pò di fretta, la classe dovrebbe andar bene. Vorrei testarla in questo modocodice:Coin.java /** A class to manage coins * @author Simone */ public class Coin { /** * Construct a new coin of a certain type * @param aValue value of the coin * @param aName name of the coin */ public Coin (String aName, double aValue) { name = aName; value = aValue; } /** * Return the value of the inserted coin * @return value in dollars */ public double getValue() { return value; } /** * Return the name of the coin * @return name of coin */ public String getName() { return name; } private String name; private double value; } CoinComparator.java /** * A class to compare Coin * @author Simone * */ public class CoinComparator implements Comparator<Coin> { public int compare(Coin a, Coin b) { if (a.getValue() < b.getValue()) return -1; if (a.getValue() == b.getValue()) return 0; return 1; } } Comparator.java /** * * @author Simone * A class to compare coin * @param <Coin> samples of Coin */ public interface Comparator<Coin> { int compare(Coin a, Coin b); }
In pratica quando scrivo il programma tester Eclipse mi dice che l'ultimo metodo non è applicabile. Perchè? Chiedo lumi a voi perchè io davvero non capiscocodice:Tester.java import java.util.Arrays; public class Tester { public static void main(String[] args) { //Creo esemplari di coin Coin quarters = new Coin("quarters", 0.25); Coin dimes = new Coin("dimes", 0.10); Coin pennies = new Coin("pennies", 0.05); Coin nickels = new Coin("nickels", 0.01); //Creo un comparatore e comparo due coin qualsiasi CoinComparator c = new CoinComparator(); int n = c.compare(quarters, dimes); System.out.print(n);//Stampa 1 -> OK //Creo un array di Coin Coin[] coins = {quarters, dimes, pennies, nickels}; Arrays.sort(coins, new CoinComparator());//Errore: the method is not applicable } }
Grazie in anticipo!


Rispondi quotando
