Autore Topic: StringBuffer non viene stampato correttamente  (Letto 484 volte)

Offline Vincenzoz

  • Utente junior
  • **
  • Post: 122
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Moto G
  • Play Store ID:
    Vincenzo Cimino
  • Sistema operativo:
    Windows 7
StringBuffer non viene stampato correttamente
« il: 07 Ottobre 2013, 20:27:12 CEST »
0
Salve, ho fatto un ciclo che finchè il contatore non arriva a 4, prende un intero e lo moltiplica per n, lo aggiunge ad una stringbuffer e ne elimina tutti i caratteri dal secondo fino al quarto e dopo inserisce il valore dentro l'intero, in modo da rifare i calcoli con quel numero, che verrà successivamente stampato in un edittext, ma il problema è che viene stampato solo il primo numero nell'edittext e non 4.
Queste sono le righe di codice:

Codice (Java): [Seleziona]
                 for(int j=0;j<4;j++){              
                              dopo=dopo*n;
                               sb.append(dopo);
                               sb = sb.delete(1,4);
                             dopo = Integer.parseInt(sb.toString());
            }
            et1.setText(sb.toString());

Grazie mille in anticipo  :D
Vincenzo Cimino @ Google Play Store


Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:StringBuffer non viene stampato correttamente
« Risposta #1 il: 07 Ottobre 2013, 21:19:00 CEST »
0
Poichè è abbastanza improbabile che StringBuffer non sia stampato correttamente, il codice che hai scritto non riflette esattamente quello che vorresti fargli fare.

Potresti scrivere un esempio di sequenza del contenuto dello StringBuffer così come te la aspetti?

Oppure, puoi verificarlo da solo facendo un po' di Log:
Codice (Java): [Seleziona]
 for(int j=0;j<4;j++){              
                              dopo=dopo*n;
                               sb.append(dopo);
                               Log.d("TAG","dopo="+dopo+"   sb="+sb.toString());
                               sb = sb.delete(1,4);
                             dopo = Integer.parseInt(sb.toString());
            }
            et1.setText(sb.toString());
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline Vincenzoz

  • Utente junior
  • **
  • Post: 122
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Moto G
  • Play Store ID:
    Vincenzo Cimino
  • Sistema operativo:
    Windows 7
Re:StringBuffer non viene stampato correttamente
« Risposta #2 il: 08 Ottobre 2013, 14:20:36 CEST »
0
Potresti scrivere un esempio di sequenza del contenuto dello StringBuffer così come te la aspetti?
Ad esempio:
           
              dopo -> sb
111*5 = 555 -> 5
555*5 = 2775 -> 2
2775*5 = 13875 -> 1
13875*5 = 69375 -> 6

StringBuffer = 5216

Potresti scrivere un esempio di sequenza del contenuto dello StringBuffer così come te la aspetti?

Oppure, puoi verificarlo da solo facendo un po' di Log:


E il risultato che ottengo dai Log è del tutto differente:

10-08 14:13:37.312: D/TAG(29071): dopo=555   sb=555
10-08 14:13:37.312: D/TAG(29071): dopo=25   sb=525
10-08 14:13:37.312: D/TAG(29071): dopo=25   sb=525
10-08 14:13:37.312: D/TAG(29071): dopo=25   sb=525

Vincenzo Cimino @ Google Play Store


Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:StringBuffer non viene stampato correttamente
« Risposta #3 il: 08 Ottobre 2013, 15:04:36 CEST »
0
Se vuoi la sequenza che hai scritto, devi cambiare il codice nel for, perchè con l'ultima riga ( dopo = Integer.parseInt(sb.toString()); ) invece di riportare il 555 al ciclo dopo, ci porti il 5, ed infatti fai 5*5 = 25.
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline Vincenzoz

  • Utente junior
  • **
  • Post: 122
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Moto G
  • Play Store ID:
    Vincenzo Cimino
  • Sistema operativo:
    Windows 7
Re:StringBuffer non viene stampato correttamente
« Risposta #4 il: 08 Ottobre 2013, 20:42:00 CEST »
0
Ok adesso i calcoli sono giusti:

10-08 20:37:44.039: D/TAG(986): dopo=555   sb=555
10-08 20:37:44.039: D/TAG(986): dopo=2775   sb=52775
10-08 20:37:44.039: D/TAG(986): dopo=13875   sb=5513875
10-08 20:37:44.039: D/TAG(986): dopo=69375   sb=587569375


I risultati di "dopo" sono giusti, ma quelli di "sb" non sono come vorrei, come posso fare in modo che dopo aver calcolato il primo "dopo" venga eliminata la prima cifra del dopo successivo e in "sb" venga inserita quella cifra che è stata tolta a "dopo"?
Ad esempio:

111*5 = 555 -> 5
55*5 = 2775 -> 2
775*5 = 13875 -> 1
3875*5 = 69375 -> 6

Grazie mille ancora  :D
« Ultima modifica: 08 Ottobre 2013, 20:54:47 CEST da Vincenzoz »
Vincenzo Cimino @ Google Play Store