Autore Topic: Copia Array  (Letto 604 volte)

Offline pdinox

  • Utente junior
  • **
  • Post: 51
  • Respect: 0
    • paoletto987
    • pdinox
    • Mostra profilo
  • Dispositivo Android:
    Nexus 4
  • Play Store ID:
    Paolo Di Nocera
  • Sistema operativo:
    windows 8 and Maveriks
Copia Array
« il: 07 Febbraio 2014, 18:20:27 CET »
0
Ragazzi ho un problema!
In pratica prelevo una stringa da un EditText e voglio sostituire a tutti gli spazi uno spazio e un "$". Perché mi da errore?
Vi ho lasciato il codice....Facendo il debug mi da errore sul secondo arraycopy.
GRAZIE.

Codice (Java): [Seleziona]
 
public class MainActivity extends Activity {

        @Override
        protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.activity_main);
               
                Button convert = (Button) findViewById (R.id.buttonconvert);
                final EditText space = (EditText) findViewById (R.id.textspace);
                final TextView ashtag = (TextView) findViewById (R.id.textashtag);
               
       
                                convert.setOnClickListener (new View.OnClickListener() {
                                       
                                        public void onClick(View v) {
                                               
                                                //Stringa iniziale
                                                String spacetextstring = space.getText().toString();
                                               
                                                //Lunghezza stringa iniziale
                                                int length_ = spacetextstring.length();
                                               
                                                char[] spacetextchar = new char[length_];
                                                spacetextchar = null;
                                                //Trasformo la stringa in un array di caratteri
                                                spacetextchar = spacetextstring.toCharArray();
                                               
                                               
                                                char[] fly = new char[length_];
                                               
                                               
                                                for (int i = 0; i<length_; i++){
                                                       
                                                        if(spacetextchar [i] == ' '){
                                                                       
                                                                System.arraycopy(spacetextchar, i+1, fly, 0, (length_ - (i+1)));
                                                                System.out.println(fly);       
                                                                spacetextchar [i+1] = '$';
                                                               
                                                                System.arraycopy(fly, 0, spacetextchar, i+2, (length_ - (i+1)));
                                                                System.out.println(spacetextchar);     

                                                        }
                                                }
                                                String hhh = String.valueOf(spacetextchar);
                                                ashtag.setText(hhh);
                                               
                                        }
                                });
               
               
        }

        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
                // Inflate the menu; this adds items to the action bar if it is present.
                getMenuInflater().inflate(R.menu.main, menu);
                return true;
        }

}
Pdinox

Offline undead

  • Utente senior
  • ****
  • Post: 666
  • Respect: +113
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S6
  • Play Store ID:
    DrKappa
  • Sistema operativo:
    Windows 10 64-bit, Windows 8.1 64-bit
Re:Copia Array
« Risposta #1 il: 07 Febbraio 2014, 18:51:03 CET »
0
Invece di fare il ciclo e tutto il resto basta un replace... prova queste due righe e in dollartextstring hai la stringa con i ' $' al posto degli spazi.

Codice (Java): [Seleziona]
 //Stringa iniziale
String spacetextstring = space.getText().toString();
String dollartextstring = spacetextstring.replace(' ', ' $');

 ;-)

Comunque buttando l'occhio il problema è che la stringa finale sarà più grande della stringa iniziale (hai gli spazi e in più il $). Quindi quando vai ad allocare fly la dimensione è troppo piccola!
« Ultima modifica: 07 Febbraio 2014, 18:52:37 CET da undead »

Offline pdinox

  • Utente junior
  • **
  • Post: 51
  • Respect: 0
    • paoletto987
    • pdinox
    • Mostra profilo
  • Dispositivo Android:
    Nexus 4
  • Play Store ID:
    Paolo Di Nocera
  • Sistema operativo:
    windows 8 and Maveriks
Re:Copia Array
« Risposta #2 il: 07 Febbraio 2014, 18:57:48 CET »
0
ma sei un grande! Grazie mille della dritta. Non ero a conoscenza di questa funzione!!! GRAZIE MILLE!!
Pdinox