Guarda mi dispiace tanto per la confusione, purtroppo il problema di imparare le cose da soli � che si impara con lacune... e mi dispiace che ti sto assillando da un po' ormai
Comunque il codice l'ho cambiato di nuovo alla fine, i due array erano confusionari quindi ho tolto l'array drivers e ho lasciato solamente cars, dentro il quale ho istanziato i piloti. ora il programma funziona, a parte il fatto che non stampa i nomi dei piloti, ma stampa:
Driver@6d06d69c
Driver@7852e922
Driver@4e25154f
Driver@70dea4e
Driver@5c647e05
Driver@33909752
The winner is Driver@7852e922
L'errore penso sia piccolo, ma io ormai ci sto impazzendo dietro a questo programma
comunque eccoti il codice completo:
codice:public class Application { public static void main(String []args){ Monoposto[] cars = new Monoposto[6]; cars[0] = new Monoposto ("Ferrari I", new Driver ("Kimi", "Raikkonen")); cars[1] = new Monoposto ("Ferrari II", new Driver ("Sebastian", "Vettel")); cars[2] = new Monoposto ("Mclaren I", new Driver ("Fernando", "Alonso")); cars[3] = new Monoposto ("Mclaren II", new Driver ("Sergio", "Perez")); cars[4] = new Monoposto ("Mercedes I", new Driver ("Nico", "Rosberg")); cars[5] = new Monoposto ("Mercedes II", new Driver ("Louis", "Hamilton")); Race grandprix = new Race(); Track track = new Track("Monza", "Italy", 70); grandprix.setTrack(track); grandprix.setCars(cars); grandprix.startRace(); grandprix.findWinner(); } } *** *** *** import java.util.Random; public class Race { private Monoposto[] cars; Track track; public void startRace(){ track.announceTrack(); System.out.println(" 3..."); System.out.println(" 2..."); System.out.println(" 1..."); System.out.println(" GO! "); for (int i = 0; i < cars.length; i++){ cars[i].turnOn(); Random increment = new Random(); cars[i].setPoints(increment.nextInt(100)); } } public void findWinner(){ for (int i = 0; i < track.getLaps(); i++){ for (int z = 0; z < cars.length; z++){ Random increment = new Random(); cars[z].setPoints(cars[z].getPoints() + increment.nextInt(100)); } System.out.println("Lap: " + i); } int max = 0; Driver winner = new Driver(); System.out.println("\n"); System.out.println("Ranking"); for (int i = 0; i < cars.length; i++){ System.out.println(cars[i].getDriver()); if (max <= cars[i].getPoints()){ max = cars[i].getPoints(); winner = cars[i].getDriver(); } }System.out.println("The winner is " + winner); } public void setCars(Monoposto[] cars){ this.cars = cars; } public Monoposto[] getCars(){ return cars; } public void setTrack(Track track){ this.track = track; } public Track getTrack(){ return track; } } *** *** *** public abstract class Vettura { private String name; private int hp; private int maxspeed; private int points; private Driver driver; public abstract void turnOn(); public String getName(){ return name; } public void setName (String name){ this.name = name; } public void setDriver(String name, Driver driver){ this.name = name; this.driver = driver; } public void setHp(int hp){ this.hp = hp; } public int getHp(){ return hp; } public void setMaxspeed(int maxspeed){ this.maxspeed = maxspeed; } public int getMaxspeed(){ return maxspeed; } public void setPoints(int points){ this.points = points; } public int getPoints(){ return points; } public void setDriver(Driver driver){ this.driver = driver; } public Driver getDriver(){ return driver; } } *** *** *** public class Monoposto extends Vettura{ public Monoposto(){ } public Monoposto(String name){ setName(name); setHp(600); setMaxspeed(340); setPoints(0); } public Monoposto(String name, Driver driver){ setName(name); setHp(600); setMaxspeed(340); setPoints(0); setDriver(driver); } public void turnOn(){ System.out.println(getName() + "Brum, brum"); } } **** *** *** public class Driver { private String name; private String surname; private int age; public Driver(){ } public Driver(String name, String surname){ setName(name); setSurname(surname); } public String getName(){ return name; } public void setName (String name){ this.name = name; } public String getSurname(){ return surname; } public void setSurname (String surname){ this.surname = surname; } public int getAge(){ return age; } public void setAge (int age){ this.age = age; } } *** *** *** public class Track { private String name; private String nation; private int laps; public Track(){ } public Track(String name, String nation, int laps){ setName(name); setNation(nation); setLaps(laps); } public String getName(){ return name; } public void setName(String name){ this.name = name; } public String getNation(){ return nation; } public void setNation(String nation){ this.nation = nation; } public int getLaps(){ return laps; } public void setLaps(int laps){ this.laps = laps; } public void announceTrack(){ System.out.println("Welcome to the " + name + " grandprix of " + nation + "!"); } }