Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11

Discussione: Operatori Or...and?

  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2007
    Messaggi
    72

    Operatori Or...and?

    Ehi...perchè questa riga di programmazione mi restituisce un errore?
    codice:
    if (x ==0 && player ==1 || x= 1 && player == 2 || x ==2 && player ==0)
    mi restituisce
    codice:
    incomparable types: java.lang.String[] and int
    if (x ==0 && player ==0 || x= 1 && player == 1 || x ==2 && player ==2)

    con....
    codice:
    int player  = console.readInt();
    int x = (int)Math.random() * 2;

  2. #2
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    manca un uguale di sicuro, nel secondo blocco x == 1
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2007
    Messaggi
    72
    è vero..che disattento!...
    ...ma pur inserendoci un altro "=" mi restituisce l'identico errore...

  4. #4
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    il problema è allora a monte... posta un po' più di codice. Che cos'è quel "console.readInt()"?
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  5. #5
    Utente di HTML.it L'avatar di @DI3GO@
    Registrato dal
    Nov 2008
    Messaggi
    537
    incomparable types: java.lang.String[] and int
    L'errore sta in un vettore di String ( String[] ), quindi prova a guardare la riga prima o la riga dopo....considera che a volte mi capita che mi segnali la riga errata il compilatore....Però un pò di codice non farebbe male.
    Nipote: persona incompetente, con le soli doti di "copia/incolla" e la creazione automatica di siti internet ed interfaccie grafiche.Compie lavori apparentemente qualificati e richiesta una modifica sparisce in quatemala con i pochi soldi ottenuti.[...] Fonte la Diegonzelli

  6. #6
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Originariamente inviato da @DI3GO@
    L'errore sta in un vettore di String ( String[] ), quindi prova a guardare la riga prima o la riga dopo....considera che a volte mi capita che mi segnali la riga errata il compilatore....Però un pò di codice non farebbe male.
    E aggiungo che, se hai a che fare con degli array di Stringhe, fare confronti utilizzando l'operatore == (oltretutto con valori numerici!!) è errato nel 99.9% dei casi.

    I confronti fra oggetti si fanno utilizzando il metodo equals().

    Ad ogni modo, se stai utilizzando delle stringhe, è completamente sbagliato il concetto: non puoi controntare una stringa con una costante (o variabile) intera. Sono due cose completamente diverse, inconfrontabili e con diversa concezione.

    La stringa "15" è una cosa completamente diversa dal numero 15. In qualunque linguaggio di programmazione.


    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

  7. #7
    Utente di HTML.it
    Registrato dal
    Dec 2007
    Messaggi
    72
    ecco qui amici...
    codice:
    ConsoleReader console = new ConsoleReader(System.in);
    String [] y = new String[2];
        y[0] = "Sasso";
        y[1] = "Forbice";
        y[2] = "Carta";
    
    int player  = console.readInt();
    int x = (int)Math.random() * 2;
    
    if (x ==0 && player ==0 || x== 1 && player == 1 || x ==2 && player ==2){
    System.out.println ("Hai pareggiato");
    }
    else
    ....tutte le altre possibili combinazioni.
    ci sarà qualche stupido errore.....

  8. #8
    Utente di HTML.it L'avatar di @DI3GO@
    Registrato dal
    Nov 2008
    Messaggi
    537
    Originariamente inviato da visind

    ci sarà qualche stupido errore.....
    Ma hai provato e ti da errore?
    e cmq è meglio scrivere i test separata in quando potrebbero andare in conflitto tra loro e non darti il risultato sperato.
    Quindi
    codice:
    ...
    if ( ( x ==0 && player ==0 ) || ( x== 1 && player == 1 ) || ( x ==2 && player ==2 ) ){
    System.out.println ("Hai pareggiato");
    }
    ...
    Funziona come le espressioni matematiche e quindi i controlli vengono fatti consecutivamente....
    E' importante che si sappia una cosa.
    codice:
    if( test1 && test2 || test3 )
    Il compilatore si limiterà a fare test1&&test2 dato che se dovesser risultare un true o un false questo non influirebbe con || successivo....
    Attenti perchè questa è una situazione pericolosa per situazioni particolari ( non ho analizzato, ma questa potrebbe esser una di queste ) e quindi è meglio ( sia per leggibilità che per precauzione ) istanziare i "test" all'interno di parentesi ( ovvio se serve e che non "cozzi" con il risultato finale ).
    Nipote: persona incompetente, con le soli doti di "copia/incolla" e la creazione automatica di siti internet ed interfaccie grafiche.Compie lavori apparentemente qualificati e richiesta una modifica sparisce in quatemala con i pochi soldi ottenuti.[...] Fonte la Diegonzelli

  9. #9
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Originariamente inviato da @DI3GO@
    E' importante che si sappia una cosa.
    codice:
    if( test1 && test2 || test3 )
    Il compilatore si limiterà a fare test1&&test2 dato che se dovesser risultare un true o un false questo non influirebbe con || successivo....
    Non ho ben capito cosa tu intenda dire, ma in questo modo non è corretto.

    Esempio:
    codice:
    boolean test1 = false;
    boolean test2 = true;
    boolean test3 = true;
    System.out.println("Valore booleano espressione: " + (test1 && test2 || test3));
    Risultato: true.
    Da quanto avevi scritto sembra che il test dell'operatore OR non influisca, ma che venga valutata solo la AND... questo non è vero.

    Perchè è equivalente a:
    codice:
    System.out.println("Valore booleano espressione: " + ((test1 && test2) || test3));
    dato che l'operatore && ha la precedenza rispetto all'operatore ||.

    Regola base: è sempre bene parentesizzare.


    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

  10. #10
    Utente di HTML.it
    Registrato dal
    Dec 2007
    Messaggi
    72
    appena posso provo...grazie ragazzi...sempre disponibili!

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.