Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it L'avatar di Reiuky
    Registrato dal
    Jul 2008
    Messaggi
    371

    Comportamento strano if

    Questo pezzo di programma...

    codice:
                    if( !trovatoTipo )
    		{
    			if( riga.startsWith( "<messaggio1>" ) )
    			{
    				fai qualcosa
    			}
    			if( riga.startsWith( "<messaggio2>" ) );
    			{
    				fai qualcos'altro
    			}
    			if( riga.startsWith( "<messaggio3>" ) );
    			{
    				fai qualcos'altro ancora
    				
    			}
                      }
                    ....
    Ha un comportamento strano.

    La String riga non inizia con nessuno dei tag contenuti negli startsWith, quindi tutti gli if dovrebbero essere falsi e il blocco if non dovrebbe fare niente.

    Invece, il primo if da false (il blocco di istruzioni all'intendo non viene elaborato), mentre il secondo da true, come tutti gli altri successivi.

    Esplorando il programma con il debug, vedo che la String riga non è mai cambiata, quindi come mai ha questo comportamento alquanto originale?

  2. #2
    Utente di HTML.it L'avatar di Reiuky
    Registrato dal
    Jul 2008
    Messaggi
    371
    Fermi tutti....

    I'm idiot!

    C'erano dei ; dopo ogni istruzione if... ci credo che non funzionava!!!!

  3. #3
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Partendo dal presupposto che gli oggetti String sono immutabili (quindi non possono proprio cambiare), il problema è che tu hai inserito dei punti e virgola dopo la definizione dell'if:
    codice:
    if( !trovatoTipo )
    		{
    			if( riga.startsWith( "<messaggio1>" ) )
    			{
    				fai qualcosa
    			}
    			if( riga.startsWith( "<messaggio2>" ) );  <-- PUNTO E VIRGOLA??
    			{
    				fai qualcos'altro
    			}
    			if( riga.startsWith( "<messaggio3>" ) );  <-- PUNTO E VIRGOLA??
    			{
    				fai qualcos'altro ancora
    				
    			}
                      }
                    ....
    Questo fa sì che l'istruzione IF dia effettivamente false, ma il blocco di istruzioni che seguono non hanno più nulla a che fare con essa, che termina appunto nel punto e virgola.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  4. #4
    Utente di HTML.it L'avatar di Reiuky
    Registrato dal
    Jul 2008
    Messaggi
    371
    Appunto.

    Grazie lele

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.