Salve a tutti gli utenti
devo risolvere un esercizio Java per la gestione degli accessi ad alcune piste da sci mediante Skipass.
Le piste sono rappresentate dal file piste.txt cosi organizzato:
nome pista(Es. Settevalli)
difficoltà(es. intermedia)
Orario apertura
orario chiusura
costo di accesso(es. 5 euro)
Gli Skipass sono rappresentati dal file skipass.txt cosi organizzato:
codice skipass
credito(es. 150) euro
cod fiscale del possessore
Elenco Piste accedute(varia da skipass in skipass, ovviamente l'elenco è vuoto all'atto dell'acquisto)
#(simbolo che conclude l'elenco delle piste accedute)
Infine i dati dei possessori di Skipass sono organizzati el file sciatori.txt cosi composto:
cod fiscale
nome
cognome
città
numero di tel
Devo implementare i vari filtri compreso un metodo che quando uno sciatore si presenta ad una pista verifichi se il credito sullo skipass è sufficiente per accedervi e in tal caso aggiornare l'elenco delle piste accedute sullo skipass.
Ho dunque provveduto a creare la prima classe
Pista:
public class Pista {
private String nome,tipo;
private double costo;
private Date oraA,oraC;
public Pista (String nome, String tipo, Date oraA, Date oraC, double costo){
this.nome=nome;
this.tipo=tipo;
this.oraA=oraA;
this.oraC=oraC;
this.costo=costo;
}
public String getNome() {
return nome;
}
public String getTipo() {
return tipo;
}
public double getCosto() {
return costo;
}
public Date getOraA() {
return oraA;
}
public Date getOraC() {
return oraC;
}
public static Pista read(Scanner sc) throws ParseException{
String nome,tipo;
Date oraA,oraC;
double costo;
if(!sc.hasNextLine())return null;
nome=sc.nextLine();
if(!sc.hasNextLine())return null;
tipo=sc.nextLine();
if(!sc.hasNextLine())return null;
oraA=(new SimpleDateFormat("HH:mm:ss").parse(sc.nextLine()));
if(!sc.hasNextLine())return null;
oraC=(new SimpleDateFormat("HH:mm:ss").parse(sc.nextLine()));
if(!sc.hasNextLine())return null;
costo=Double.parseDouble(sc.nextLine());
return new Pista(nome,tipo,oraA,oraC,costo);
}
public void stampa(PrintStream p){
p.println(nome);
p.println(tipo);
p.println(oraA);
p.println(oraC);
p.println(costo);
}
}
Poi la classe
sciatore:
public class Sciatore {
private String cf,nome,cognome,città,num;
public Sciatore(String cf,String nome,String cognome,String città, String num){
this.cf=cf;
this.nome=nome;
this.cognome=cognome;
this.città=città;
this.num=num;
}
public String getCf() {
return cf;
}
public String getNome() {
return nome;
}
public String getCognome() {
return cognome;
}
public String getCittà() {
return città;
}
public String getNum() {
return num;
}
public static Sciatore read(Scanner sc){
String cf,nome,cognome,città,num;
if(!sc.hasNextLine())return null;
cf=sc.nextLine();
if(!sc.hasNextLine())return null;
nome=sc.nextLine();
if(!sc.hasNextLine())return null;
cognome=sc.nextLine();
if(!sc.hasNextLine())return null;
città=sc.nextLine();
if(!sc.hasNextLine())return null;
num=sc.nextLine();
return new Sciatore (cf,nome,cognome,città,num);
}
public void stampa(PrintStream p){
p.println(cf);
p.println(nome);
p.println(cognome);
p.println(città);
p.println(num);
}
Il Problema sorge nella classe
Skipass che a quanto ho capito dovrebbe referenziare le altre due solo che non so come fare ne per il costruttore ne per il metodo read, io stavo procedendo cosi ma credo che il procedimento sia del tutto errato :
public class Skipass{
private String codice;
private Sciatore possessore;
private Double costo;
private Pista piste;
private ArrayList<String>piste;
public Skipass (String codice,Double costo,Sciatore possessore, ArrayList<String> piste){
this.codice=codice;
this.costo=costo;
this.possessore=possessore;
this.piste=piste;
}
public Sciatore getPossessore() {
return possessore;
}
public void setPossessore(Sciatore possessore) {
this.possessore = possessore;
}
public ArrayList<String> getPiste() {
return piste;
}
public void setPiste(ArrayList<String> piste) {
this.piste = piste;
}
public String getCodice() {
return codice;
}
public Double getCosto() {
return costo;
}
public static Skipass read(Scanner sca) throws ParseException, FileNotFoundException{
String codice;
double costo;
String possessore;
if(!sca.hasNextLine())return null;
codice=sca.nextLine();
if(!sca.hasNextLine())return null;
costo=Double.parseDouble(sca.nextLine());
if(!sca.hasNextLine())return null;
possessore = sca.nextLine();
ArrayList<String> piste = new ArrayList<String>();
String s = sca.nextLine();
while(!s.equals("#")){
piste.add(s);
s=sca.nextLine();
}
return new Skipass(codice,costo,possessore,piste);
}
public void stampa(PrintStream pr ){
pr.println(codice);
pr.println(costo);
pr.println(possessore);
for(String a : piste)
pr.println(a);
}
A questo punto mi sono fermato e chiedo gentilmente il vostro aiuto
Grazie in anticipo