Visualizzazione dei risultati da 1 a 8 su 8

Discussione: true || true == false

  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2010
    Messaggi
    68

    true || true == false

    Ciao a tutti. Sarà la stanchezza ma a me sembra che il mio codice faccia T||T=F (ovviamente dovrebbe darmi T). Dove sbaglio?
    codice:
    String regexName="re"; 		
    String regexSurname="la";
    Pattern patternName = Pattern.compile(regexName, Pattern.CASE_INSENSITIVE); 		
    Pattern patternSurname = Pattern.compile(regexSurname, Pattern.CASE_INSENSITIVE);	
    Matcher matcherName = patternName.matcher("Remo"); 		
    Matcher matcherSurname = patternSurname.matcher("Labarca"); 		
    
    System.out.println((matcherName.find()==true) + "||" + (matcherSurname.find()==true) + "=" + (matcherName.find()==true || matcherSurname.find()==true)); 		
    if ((matcherName.find()==true) || (matcherSurname.find()==true)) System.out.println("SONO DENTRO");

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    cosa vuoi ottenere? cosa ottieni?
    nel dubbio separa le istruzioni, eseguile e dumpale una ad una
    RTFM Read That F*** Manual!!!

  3. #3
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472
    Quel "=" è quantomeno sospetto, se l'operatore è "=="...

    Poi penso che si possa evitare di confrontare il booleano con il valore true per determinare se, appunto, è true.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  4. #4
    Utente di HTML.it
    Registrato dal
    Jan 2010
    Messaggi
    68
    Originariamente inviato da valia
    cosa vuoi ottenere? cosa ottieni?
    nel dubbio separa le istruzioni, eseguile e dumpale una ad una
    Praticamente vorrei che se matchName contenesse regexName o matchSurname contenesse regexSurname stampi SONO DENTRO. Per fare questo uso questo if:
    codice:
    if ((matcherName.find()==true) || (matcherSurname.find()==true))
    Il problema è che quando uno dei due è TRUE od entrambi sono TRUE il programma non stampa niente!



    Originariamente inviato da alka
    Quel "=" è quantomeno sospetto, se l'operatore è "=="...

    Poi penso che si possa evitare di confrontare il booleano con il valore true per determinare se, appunto, è true.
    Per '=' è solo una stampa (il significato sarebbe '==').
    Si confrontare il booleano con TRUE è ridondante, però è strano che non stampi SONO DENTRO.

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    Originariamente inviato da 8paolo9
    Praticamente vorrei che se matchName contenesse regexName o matchSurname contenesse regexSurname stampi SONO DENTRO. Per fare questo uso questo if:
    codice:
    if ((matcherName.find()==true) || (matcherSurname.find()==true))
    Il problema è che quando uno dei due è TRUE od entrambi sono TRUE il programma non stampa niente!
    sei sicuro che valgano entrambi true?
    fai
    codice:
    boolean matName = matcherName.find();
    System.out.println("(matcherName.find() " + mat); 
    boolean matSurn = matcherSurname.find();
    System.out.println("(matcherSurname.find() " + matSurn);
    e dimmi cosa ottieni
    RTFM Read That F*** Manual!!!

  6. #6
    Utente di HTML.it
    Registrato dal
    Jan 2010
    Messaggi
    68
    Originariamente inviato da valia
    sei sicuro che valgano entrambi true?
    fai
    codice:
    boolean matName = matcherName.find();
    System.out.println("(matcherName.find() " + mat); 
    boolean matSurn = matcherSurname.find();
    System.out.println("(matcherSurname.find() " + matSurn);
    e dimmi cosa ottieni
    Mi da True e True. Però se modifico il codice così (ho rincollato sotto il codice che mi hai girato):
    codice:
    boolean matName = matcherName.find(); 			
    System.out.println("(matcherName.find() " + matName);  			
    boolean matSurn = matcherSurname.find(); 			
    System.out.println("(matcherSurname.find() " + matSurn); 			 			
    
    matName = matcherName.find(); 			
    System.out.println("(matcherName.find() " + matName);  			
    matSurn = matcherSurname.find(); 			
    System.out.println("(matcherSurname.find() " + matSurn);
    mi stampa True e True e dopo False e False. Ho letto la documentazione ma non mi è chiaro perché la seconda volta mi stampa due False.

    P.S: l'ho incollato prima della System.out.println

  7. #7
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Forse per quando scritto nella documentazione di find:

    The find method scans the input sequence looking for the next subsequence that matches the pattern.
    E, più avanti
    This method starts at the beginning of this matcher's region, or, if a previous invocation of the method was successful and the matcher has not since been reset, at the first character not matched by the previous match
    Quindi, ogni invocazione di "find" fa avanzare alla prossima regione...


    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

  8. #8
    Utente di HTML.it
    Registrato dal
    Jan 2010
    Messaggi
    68
    Perfetto grazie 1000!!

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.