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

Discussione: operatori logici

  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2012
    Messaggi
    55

    operatori logici

    Ciao,
    ho scritto il seguente metodo, che qualora il mese sia uguale a 2 mi stampa che il giorno non è valido.

    Il problema è che nonostante nel main assegno mese = 2 il controllo non avviene.

    Mi aiutate a capire dove sbaglio?

    grazie
    bb


    public void setGiorno(int giorno) { //murator method
    if (giorno > 0 && giorno < 32 && mese !=2 )
    {
    this.giorno = giorno;
    }
    else
    {
    System.out.println("giorno non valido");
    }

    }

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    dovresti usare i tag code per postare il codice (aumenti la leggibilità dello stesso).

    Seconda cosa, tu hai questa espressione

    giorno > 0 && giorno < 32 && mese !=2

    che controlla 2 variabili, giorno e mese.

    Nell'ordine, si parte da giorno > 0 , se valida controlla giorno < 32, se valida controlla mese != 2. La condizione sul mese è controllata per ultima, sempre che le prime 2 siano true (vale la regola dello short circuit, in and la prima false si ferma perché è tutto false).

    Quindi, quanto valgono giorno e mese?
    RTFM Read That F*** Manual!!!

  3. #3
    Utente di HTML.it L'avatar di Pastore12
    Registrato dal
    Oct 2008
    Messaggi
    1,051
    Riscrivi così:


    Codice PHP:
    public void setGiorno(int giorno) { //murator method

      
    System.out.println("giorno: " giorno ", mese: " mese);

      if (
    giorno && giorno 32 && mese !=)
      {
        
    this.giorno giorno;
      }
      else
      {
        
    System.out.println("giorno non valido");
      }

    E dicci cosa stampa. Poi vediamo.
    "Ethics are to me something private. Whenever you use it as an argument for why somebody_else should do something, you’re no longer being ethical, you’re just being a sanctimonious dick-head"
    Linus Torvalds

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2012
    Messaggi
    55
    ciao,
    scusa ma non riesco ad abituarmi ad inserire i tag code. Ma dove li trovo?

    ecco quanto stampa....


    giorno: 31, mese: 0

    purtroppo mese è 0 nonostante gli ho assegnato 2

    bb

  5. #5
    Magari se postassi anche la parte di codice in cui richiami quel metodo....

  6. #6
    Utente di HTML.it
    Registrato dal
    Feb 2012
    Messaggi
    55
    ho notato che la variabile mese presente nell'operatore logico me lo segna di colore blu, come l'attributo dichiarato private..

    potrebbe essere quello il problema....

    bb

  7. #7
    Utente di HTML.it L'avatar di Pastore12
    Registrato dal
    Oct 2008
    Messaggi
    1,051
    Per inserire codice, scrivilo in mezzo ai tag:

    [ c o d e ] [ / c o d e ] oppure [ p h p ] [ / p h p ]

    posta tutto il codice, forse il mese che usi nel metodo è a livello di classe, il mese che setti a 2 invece è una variabile con scope interno al metodo dove lo setti. La differente colorazione potrebbe esserne una conseguenza..
    "Ethics are to me something private. Whenever you use it as an argument for why somebody_else should do something, you’re no longer being ethical, you’re just being a sanctimonious dick-head"
    Linus Torvalds

  8. #8
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Originariamente inviato da blubossa
    ciao,
    scusa ma non riesco ad abituarmi ad inserire i tag code. Ma dove li trovo?
    Non serve trovarli (anche se c'è un pulsante grosso così con scritto CODE, prmia di PHP e List)... è sufficiente scriverli: si apre una parentesi quadra, si scrive CODE (maiuscolo o minuscolo fa lo stesso), si chiude la quadra... poi si incolla il codice... poi si apre una quadra, si scrive /CODE e si chiude la quadra... così:

    [CODE]
    ...codice...
    [/CODE]


    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

  9. #9
    Utente di HTML.it
    Registrato dal
    Feb 2012
    Messaggi
    55
    Codice PHP:
    public class ProvaData {
        
        
        private 
    int giorno;
        private 
    int mese;
        private 
    int anno;
        
        
    //////
        
    public int getGiorno() { //accessor method
            
    return giorno;
        }
        public 
    void setGiorno(int g) { //murator method
            
    System.out.println("giorno: " giorno ", mese: " mese); 
            if (
    && 32 && mese !=)
            {
                
    this.giorno g;
            }
            else
            {
                
    System.out.println("giorno non valido");
            }
            
        }
        
    /////
            
        
    public int getMese() { // accessor method
            
    return mese;
        }
        public 
    void setMese(int mese) { // murator method
            
    if (mese && mese 13)
            {
                
    this.mese mese;    
            }
            else
            {
                
    System.out.println("mese non valido");
            }
            
        }
        
    ///////
        
        
    public int getAnno() { // accessor method
            
    return anno;
        }
        public 
    void setAnno(int anno) { // murator method
            
    if (anno 2000 && anno 2013)
            {
                
    this.anno anno;            
            }
            else 
            {
                
    System.out.println("anno non valido");
            }

        }
        



  10. #10
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    e il main che esegui?
    tieni conto che tu fai System.out.println(giorno) anche se poi il controllo lo fai su g, stampa il valore di g
    RTFM Read That F*** Manual!!!

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.