2014-04-18 2 views
-2

Je crée une méthode pour retourner les valeurs d'un tableau. Mais j'ai un problème.java obtenir toutes les valeurs d'un tableau dans une méthode

Supposons que les valeurs du tableau sont: 771 11 141 1 11 79 7

arr [0] = 771, arr [1] = 11, arr [2] = 141, ... arr [n]

Ensuite, c'est ma méthode:

public static String split_in_string(int [] an){ 
    int ans; 
    String ansl = ""; 
    for(int i = 0; i < an.length; i++){ 
     ans = an[i]; 
     ansl = Integer.toString(ans); 
     return ansl; 
    } 
    return ansl; 
} 

Si je ci-dessous une partie dans la méthode principale:

int ans; 
    String ansl = ""; 
    for(int i = 0; i < an.length; i++){ 
     ans = an[i]; 
     ansl = Integer.toString(ans); 
     System.out.println(ansl+" "); 
    } 

Il fonctionne bien. Mais, si j'utilise la méthode split_in_string(), elle n'affiche que la première valeur du tableau.

Je me attendais 771 11 141 1 11 79 7 que le résultat, mais je reçois seulement 771

Qu'est-ce qui ne va pas dans ma méthode split_in_string()? Comment puis-je le réparer?

+1

En split_in_string: ansl = Inte ger.toString (ans); doit être remplacé par: ansl + = Integer.toString (ans); – slaadvak

Répondre

2

Changer votre méthode:

public static String split_in_string(int [] an){ 
     int ans; 
     String ansl = ""; 
     for(int i = 0; i < an.length; i++){ 
      ans = an[i]; 
      ansl = Integer.toString(ans); 
     // return ansl; //commented out this line 
      Sysytem.out.println(ansl+" "); //added tjis line 
     } 
     return ansl; 
    } 
+1

Downvoted car il ne fait que déplacer l'erreur, de retourner seulement la première valeur '771' à retourner seulement la dernière valeur' 7'. – laune

+0

Ive édité ma réponse merci pour la correction – Ziker

+0

Certaines valeurs vont à la sortie standard, une valeur est retournée ...? J'ai peur que votre correction ne fasse qu'empirer les choses. – laune

2

essayez ceci:

public static String split_in_string(int [] an){ 
    int ans; 
    String ansl = ""; 
    for(int i = 0; i < an.length; i++){ 
     ans = an[i]; 
     ansl += Integer.toString(ans); 
     //return ans1; //commented this line   
    } 
    return ansl; 
} 
2

Utilisez ansl += Integer.toString(ans);. Vous devez ajouter les valeurs au même objet chaîne.

Essayez comme ceci:

for(int i = 0; i < an.length; i++){ 
    ans = an[i]; 
    ansl += Integer.toString(ans); 
} 
1

Vous avez deux déclarations de retour dans use split_in_string et vous revenez donc de la première itération dans la boucle.

Pour renvoyer toutes les chaînes converties, créez un List<String>, ajoutez-y les chaînes converties et renvoyez-le.

List<String> split_in_string(int [] an){ 
    List<String> ansl = new ArrayList<String>(); 
    for(int i = 0; i < an.length; i++){ 
    ansl.add(Integer.toString(an[i])); 
    } 
    return ansl; 
} 

OU, tout en une seule chaîne:

String split_in_string(int [] an){ 
    Stringbuilder ansl = new StringBuilder(); 
    String del = ""; 
    for(int i = 0; i < an.length; i++){ 
    ansl.append(del).append(Integer.toString(an[i])); 
    del = " "; 
    } 
    return ansl.toString(); 
} 
+0

Si vous voulez tout avoir dans une chaîne, utilisez un constructeur de chaîne et ajoutez-y. – laune

1

Après vous donne aussi ce que vous voulez -

String str = Arrays.toString(array).replaceAll(",|\\]|\\[", ""); 

par exemple

int[] array = {771, 11, 141, 1, 11, 79, 7}; 
String str = Arrays.toString(array).replaceAll(",|\\]|\\[", ""); 
System.out.println(str); 

affiche -

 
771 11 141 1 11 79 7 
2

Le problème c'est votre première déclaration de retour

for(int i = 0; i < an.length; i++){ 
    ans = an[i]; 
    ansl = Integer.toString(ans); 
    return ansl; // <- This return doesn't allow to continue the loop foor! 
} 
return ansl; 

Cependant, vous pouvez le faire pour donner que vous voulez:

String str = Arrays.toString(array); 
Questions connexes