Autore Topic: Un bug di un semplicissimo counter  (Letto 485 volte)

Offline BudinoAlCiocc

  • Nuovo arrivato
  • *
  • Post: 8
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy Note (GT-N7000)
Un bug di un semplicissimo counter
« il: 01 Maggio 2012, 14:09:59 CEST »
0
Ciao,

Sicuramente sarà una stupidagine, ma non riesco a capire il perchè di questo strano bug.

Praticamente quando clicco sul tasto 1, il counter aumenta di 1, sino e qui tutto bene, ma se premo il tasto per per farlo diminuire, al counter ne aggiunge 1, continuando a cliccare, torna al valore 1, poi 0 etc etc.

Non comprendo del perchè prima ne aggiunge 1 e poi continua con la sua funzione.

Grazie in anticipo

Ciao

Codice: [Seleziona]
int counter = 0;

Button btn1 = (Button) findViewById(R.id.btn1);
Button btn2 = (Button) findViewById(R.id.btn2);
final TextView textV1 = (TextView) findViewById(R.id.textV1);
               
         
         
//      Button Event
        btn1.setOnClickListener(new OnClickListener() {
               
                public void onClick(View v) {
                       
                        textV1.setText("" + counter++);
                       
                }
        });

//        Button Event
        btn2.setOnClickListener(new OnClickListener() {
               
                public void onClick(View v) {
                       
                        textV1.setText("" + counter--);
                       
                }
        });

Offline iceweasel

  • Moderatore globale
  • Utente senior
  • *****
  • Post: 878
  • Respect: +147
    • Mostra profilo
  • Dispositivo Android:
    LGE P990 - Google Nexus 5
  • Sistema operativo:
    Linux Debian Sid
Re:Un bug di un semplicissimo counter
« Risposta #1 il: 01 Maggio 2012, 14:58:55 CEST »
0
Non conosci la differenza tra gli operatori incremento/decremento post-fisso con quello pre-fisso, presente in molti linguaggi che derivano dalla sintassi del C,  quindi indirettamente anche Java. Prova a sostituire "counter++" e "counter--" con "++counter" e "--counter". Come ultima cosa per convertire un intero in stringa usa "String.valueOf".
adb logcat | tee /tmp/logcat | grep TAG

Offline zaxxon

  • Nuovo arrivato
  • *
  • Post: 34
  • Respect: +4
    • Mostra profilo
  • Dispositivo Android:
    Archos 101 G9
  • Sistema operativo:
    Ubuntu 10.04
Re:Un bug di un semplicissimo counter
« Risposta #2 il: 01 Maggio 2012, 15:00:23 CEST »
0
Gli operatori ++ e -- funzionano in maniera diversa al variare della loro posizione rispetto alla variabile operando:
Codice (Java): [Seleziona]
n = variabile++;

è uguale a scrivere

n = variabile;
variabile = variabile + 1;

Codice (Java): [Seleziona]
n = ++variabile;

è uguale a scrivere

variabile = variabile + 1;
n = variabile;

Nei 2 casi il valore finale di n è diverso.

Nel tuo caso particolare, utilizzando il post-incremento (e il post-decremento) la variabile visualizzata dal setText non mostra il valore corrente perché viene incrementata (o decrementata) subito dopo averla visualizzata.
Modifica il codice usando il pre-incremento (e pre-decremento) ed i conti dovrebbero tornare.

[edit] Oops, avevano già risposto nel frattempo! [/edit]
« Ultima modifica: 01 Maggio 2012, 15:02:30 CEST da zaxxon »

Offline BudinoAlCiocc

  • Nuovo arrivato
  • *
  • Post: 8
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy Note (GT-N7000)
Re:Un bug di un semplicissimo counter
« Risposta #3 il: 01 Maggio 2012, 17:00:21 CEST »
0
Non conosci la differenza tra gli operatori incremento/decremento post-fisso con quello pre-fisso, presente in molti linguaggi che derivano dalla sintassi del C,  quindi indirettamente anche Java. Prova a sostituire "counter++" e "counter--" con "++counter" e "--counter". Come ultima cosa per convertire un intero in stringa usa "String.valueOf".

Ma più che altro non conosco java, non mi sono posto neppure la domanda pur programmando in Basic.

Comunque grazie ragazzi siete stati molto gentili, disponibili e chiari.

Ciao  :-)

Offline AliceInWonderland

  • Nuovo arrivato
  • *
  • Post: 23
  • Respect: +1
    • Github
    • Google+
    • Raffaella Pivetta
    • pivetta.raffaella@hotmail.it
    • Mostra profilo
  • Dispositivo Android:
    samsung galaxy nexus ( android 4.3 )
  • Sistema operativo:
    window 7
Re:Un bug di un semplicissimo counter
« Risposta #4 il: 03 Maggio 2012, 10:59:11 CEST »
0
comunque prova sempre a fare il debug!!! li riesci a vedere come variano le variabili  ;-)
Raffaella

Offline BudinoAlCiocc

  • Nuovo arrivato
  • *
  • Post: 8
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy Note (GT-N7000)
Re:Un bug di un semplicissimo counter
« Risposta #5 il: 03 Maggio 2012, 22:26:41 CEST »
0
lella grazie della dritta, per ora l'ambiente Eclipse mi giunge "nuovo" quindi devo prenderci la mano  :D

Grazie ancora a tutti voi  :-)