Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2014
    Messaggi
    5

    Problema ad entrare in alcuni IF, anche con condizioni corrette

    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.17Luogo_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!

  2. #2
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Sei sicuro di parlare del linguaggio web lato client di nome javascript? non sara' per caso il lontano parente JAVA?
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2014
    Messaggi
    5
    Quote Originariamente inviata da br1 Visualizza il messaggio
    Sei sicuro di parlare del linguaggio web lato client di nome javascript? non sara' per caso il lontano parente JAVA?
    Hai Perfettamente ragione, chiedo scusa!
    ...Non c'è una sezione su questo forum per Java?

  4. #4
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Le stringhe (e gli oggetti in generale) non si confrontano con == ma con equals.
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2014
    Messaggi
    5
    Quote Originariamente inviata da Alex'87 Visualizza il messaggio
    Le stringhe (e gli oggetti in generale) non si confrontano con == ma con equals.
    L'ho pensato anche io, ma Eclipse mi dava errore!
    Comunque ho risolto, dato che l'inseramento era numerico, ho trasformato la stringa in una variabile intera e perfezionando l'IF, funziona!
    Grazie a Tutti comunque!

  6. #6
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Quote Originariamente inviata da Capobuf Visualizza il messaggio
    L'ho pensato anche io, ma Eclipse mi dava errore!
    Dipende da cosa hai scritto...
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  7. #7
    Utente di HTML.it
    Registrato dal
    Jan 2014
    Messaggi
    5
    Quote Originariamente inviata da Alex'87 Visualizza il messaggio
    Dipende da cosa hai scritto...
    Con S1 come prima stringa e S2 come senconda
    codice:
    if(s1.equals(s2))
    {
    //Istruzioni
    }

  8. #8
    Utente di HTML.it L'avatar di minomic
    Registrato dal
    Nov 2010
    Messaggi
    635
    Quello che hai scritto è giusto. L'errore starà da un'altra parte. Tra l'altro... quale errore ti dava Eclipse?

    In ogni caso puoi guardare questo mwe (minimal working example)
    codice:
    import java.util.Scanner;
    
    
    public class ConfrontoStringhe {
    
    
    	public static void main(String[] args) {
    		
    		String s1="la mia stringa", s2="";
    		
    		Scanner sc = new Scanner(System.in);
    		
    		while(true) {
    			System.out.print("Inserire stringa: ");
    			s2 = sc.nextLine();
    			if(s2.equals(s1)) System.out.println("Le stringhe coincidono");
    			else System.out.println("Le stringhe NON coincidono");
    		}
    
    
    	}
    
    
    }
    Un'accortezza può essere quella di confrontare le stringhe in lower case, sempre ammesso che il software non debba essere case sensitive.

  9. #9
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Per il case insensitive c'è equalsIgnoreCase
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.