Salve a tutti, premetto che non sono un esperto, ma anzi, lo sto iniziando a masticare ora e molto non mi è chiaro. Chiedo quindi perdono sia per errori forse banali, sia per l'uso del forum (titolo forse troppo generico?).
Vengo a spiegare il problema. Avendo in esame 3 Stazioni "Domodossola", "Novara" e "Verbania" e in input Il luogo di partenza, il luogo di arrivo e un orario indicativo, devo mostrare tutti i treni che percorrono quella tratta.
L'ho praticamente completato, leggo un file TXT con una struttura del genere:
codice:
Domodossola:Novara:8.07:9.17
Luogo_Partenza:Luogo_Destinazione:Orario_Partenza:Orario_Arrivo
E così via.
Prendo una stringa, la scompongo grazie al termine ":" e carico ogni token su una stringa. Poi verifico che l'utente voglia andare, ad esempio, da Domodossola a Novara e controllo che al primo posto ci sia Domodossola (Luogo_Partenza) e che subito dopo ci sia Novara (Luogo_Destinazione).
Il codice spiega più di mille parole
codice:
while (n==0){
System.out.println("Inserisci il Luogo da dove vuoi partire ");
System.out.println("1. Domodossola");
System.out.println("2. Novara");
System.out.println("3. Verbania - Pallanz / Gravellona Toce");
Luogo_Partenza=br.readLine(); //Assumo il valore con l'oggetto br (linea 21) e utilizzo il metodo readLine()
switch(Luogo_Partenza) {
case "1":
System.out.println("Inserisci Destinazione:");
System.out.println("1. Novara");
System.out.println("2. Verbania - Pallanz / Gravellona Toce");
Luogo_Destinazione=br.readLine();
n++;
break; //si ferma qui
[.....]
default:
System.out.println("ERRORE: INSERISCI UN VALORE");
}
Prendo "Pezzi di codice" per non occupare troppo spazio, comunque con il codice seguente faccio il lavoro sporco, caricando in A il Luogo di Partenza, in B il luogo di destinazione in C e D gli orari.
Poi controllo che l'utente abbia inserito, ad esempio, in Luogo_Partenza il valore 1, e in Luogo_Destinazione il valore 2. Inoltre controllo se in A c'è effettivamente la parola che voglio.
codice:
String lettura;
while ((lettura = b.readLine()) != null){
StringTokenizer st = new StringTokenizer(lettura, ":");
while (st.hasMoreTokens()){
String A = st.nextElement().toString();
String B = st.nextElement().toString();
String C = st.nextElement().toString();
String D = st.nextElement().toString();
boolean DomodossolaA = A.equalsIgnoreCase("Domodossola");
boolean DomodossolaB = B.equalsIgnoreCase("Domodossola");
boolean VerbaniaA = A.equalsIgnoreCase("Verbania");
boolean VerbaniaB = B.equalsIgnoreCase("Verbania");
boolean NovaraA = A.equalsIgnoreCase("Novara");
boolean NovaraB = B.equalsIgnoreCase("Novara");
//System.out.println(Luogo_Partenza+Luogo_Destinazione+DomodossolaA+NovaraB);
if ((Luogo_Partenza=="1") && (Luogo_Destinazione=="1") && (DomodossolaA==true) && (NovaraB==true)){
System.out.println(A+" "+B+" "+C+" "+D);
}
else if ((Luogo_Partenza=="1") && (Luogo_Destinazione=="2") && (DomodossolaA==true) && (VerbaniaB==true)){
System.out.println(A+B+C+D);
}
else if ((Luogo_Partenza=="2") && (Luogo_Destinazione=="1") && (NovaraA==true) && (DomodossolaB==true)){
System.out.println(A+B+C+D);
}
else if ((Luogo_Partenza=="2") && (Luogo_Destinazione=="2") && (NovaraA==true) && (VerbaniaB==true)){
System.out.println(A+B+C+D);
}
Ripeto, il problema è che non entra in nessun IF. Ho provato anche a stampare i valori subito dopo l'IF, tutti come li voglio io, ma comunque non entra nell'IF anche se soddisfo tutte le condizioni!
Il codice completo è disponibile QUI
Grazie a tutti e scusatemi se sono troppo prolisso!