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:
Ho dunque provveduto a creare la prima classe Pista:
Poi la classe sciatore:
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 :
A questo punto mi sono fermato e chiedo gentilmente il vostro aiuto
Grazie in anticipo
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)
- 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)
- cod fiscale
- nome
- cognome
- città
- numero di tel
Ho dunque provveduto a creare la prima classe Pista:
Codice:
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);
}
}
Codice:
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 :
Codice:
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){
Scanner sc = null;
String codice;
Double costo;
Sciatore possessore;
if(!sca.hasNextLine())return null;
codice=sca.nextLine();
if(!sca.hasNextLine())return null;
costo=Double.parseDouble(sca.nextLine());
if(!sca.hasNextLine())return null;
?
?
Grazie in anticipo
Ultima modifica: