2014-05-10 2 views
1

Comment est-ce que je peux convertir la chaîne (de cette forme: "0 100 300 200") au tableau de long en Java (Android)?Comment convertir une chaîne de caractères ("0 100 300 200") en tableau de Java?

Pourriez-vous jeter un oeil à mon code?

public long[] ConvertStringToLongArray(String tekst) 
    { 
     int L1 = tekst.length(); 
     long[] somelong = new long[L1]; 
     String[] tekstarray = tekst.split(" "); 
     for (int i=0;i<=L1;i++) 
     { 
      somelong[i] = Long.parseLong(tekstarray[i]); 
     } 
     return somelong; 
    } 

Ceci est une partie de l'application de l'information pour la communauté scolaire. Je suis débutant en programmation Java. Je suis débutant en programmation Java.

+2

Ce code le fait. Quel est le problème? –

+0

Assurez-vous d'expliquer sur l'application que le travail n'est pas entièrement le vôtre. –

Répondre

1

Le code est fondamentalement OK. Un bug que vous avez là, cependant, initialise la longueur de somelong avec L1. L1 est le nombre de caractères dans tekst, donc cela se traduira par un tas de zéros involontaires à la fin de votre tableau. La taille correcte serait la même taille que tekstarray.

EDIT: Comme Luiggi Mendoza a commenté, division par "\\s+" au lieu de " " résoudrait aucun problème avec le nombre étant délimité par plus d'un espace.

public long[] ConvertStringToLongArray(String tekst) 
{ 
    String[] tekstarray = tekst.split("\\s+"); 
    long[] somelong = new long[teksarray.length]; 
    for (int i = 0; i <= somelong.length; i++) 
    { 
     somelong[i] = Long.parseLong(tekstarray[i]); 
    } 
    return somelong; 
} 
+0

En fait, il serait préférable de diviser par '" \\ s + "' afin d'éviter des espaces vides supplémentaires entre les nombres. –

+0

remplacer L1 par tekstarray.length – EasterBunnyBugSmasher

+0

@LuiggiMendoza tru 'dat. Edité ma réponse en conséquence. – Mureinik

0

Votre code fonctionne très bien. Modifier la taille de L1 en

L1 = tekstarray.length; 

Vous devez également supprimer = dans votre boucle for.

for (int i=0;i <L1;i++) 
+0

Merci! Mon application fonctionne maintenant correctement. – Defozo

Questions connexes