Cum se utilizează „sau” în Java? (Programare, Java, Operațiuni Booleene)

utilizator2916424 a intrebat.

Sunt destul de nou în Java și nu-mi pot da seama cum să folosesc ‘or’. Care este echivalentul Java? Am încercat deja && și || dar eclipse nu îl recunoaște.

Aceasta este o parte din codul meu:

if (action.equals ("run") || ("sprint")) {
    System.out.println("you ran");
}
else {
    System.out.println("else");
}

Comentarii

  • OR bitwise OR sau OR condițional? –  > Por Alexis C..
  • && înseamnă AND. Căutați || –  > Por Aycan Yașıt.
  • Postați un cod poate? Se schimbă în funcție de context. –  > Por Taylor.
  • eclipse nu o recunoaște Înseamnă că îl folosești unde nu ar trebui. –  > Por Sotirios Delimanolis.
  • (turkey && stuffing) || (potatoes && gravy) –  > Por Jason Sperske.
3 răspunsuri
T.J. Crowder

Am încercat deja && și || dar eclipse nu o recunoaște.

Asta este foarte ciudat, dar doar pentru a acoperi elementele de bază: Să presupunem că aveți variabila a și că aceasta conține valoarea 5. Apoi:

if (a == 5 || a == 7)

…va fi adevărată, deoarece prima parte a expresiei (a == 5) este adevărată. Așadar, afirmația „a este egală cu 5 sau a este egală cu 7″ este adevărată.

Site-ul || poate fi utilizat, în Java, numai în cazul în care se așteaptă o expresie booleană (adevărată sau falsă), cum ar fi în cadrul unei aplicații de tip if ca cea de mai sus. Așadar, în mare parte într-o aplicație if sau un operator condițional (care ?...: lucru, numit uneori operator ternar).


Referitor la editarea dvs., problema este că ambele părți ale || operator nu sunt expresii adevărate sau false („boolean”). Afirmația dvs:

if (action.equals ("run") || ("sprint")){

se descompune în felul următor:

if (
   action.equals ("run")
|| // ("or")
   ("sprint")
)

a doua parte nu este o expresie adevărat/false, ci un șir de caractere. Modul corect de a exprima acest lucru în Java (sau în aproape orice alt limbaj de programare) este:

if (action.equals ("run") || action.equals ("sprint")){

Acum ambele părți ale expresiei || rezultă în expresii adevărat/false:

if (
   action.equals ("run")
|| // ("or")
   action.equals ("sprint")
)

Motivul pentru aceasta este că a doua parte poate să nu aibă absolut nimic de-a face cu action, și, prin urmare, compilatorul nu poate presupune că intenționați să o reutilizați în a doua parte a expresiei. De exemplu, ați putea dori să utilizați || cu două lucruri care nu au nicio legătură între ele:

if (action.equals("run") || somethingElse.equals("run")) {

Comentarii

  • atunci când se spune că eclipse nu recunoaște expresia, cel mai probabil se datorează faptului că aceasta este utilizată în afara locației sale corespunzătoare –  > Por SpiderShlong.
Fabio Carello

Ok. ("sprint") nu este o expresie booleană. Deoarece o if condiție așteaptă o expresie booleană, codul tău returnează o eroare. Ar trebui să schimbați linia cu:

if (action.equals ("run") || action.equals("sprint")){

StFS

equals returnează un boolean, iar operatorul || vrea două booleene de fiecare parte.

Efectuați un action.equals("run") pe o parte, dar apoi un ("sprint") pe cealaltă parte, ceea ce nu este o expresie booleană.

Schimbați codul astfel:

if (action.equals("run") || action.equals("sprint")){