2011-03-11 3 views
3

J'ai été référé à ce site par un ami. J'aime que j'ai pu regarder des fils similaires avant de commencer ce sujet. Malheureusement, je n'ai rien vu à propos de ce problème spécifique.Passant et retournant StringBuilders: Java

Je rencontre un problème lors du passage de StringBuilders d'un objet à un autre en Java. Je ne sais pas quel est le problème et je suis perdu. Je peux passer et retourner des données toute la journée. Avec StringBuilders, cela ne fonctionne tout simplement pas. Je pense que c'est quelque chose de vraiment facile que je suis simplement trop frustré de voir.

J'ai un devoir qui me demande de déclarer 3 Stringbuilders avec mon prénom, mon deuxième prénom et mon nom de famille. Aucun problème.

Il veut également que 3 objets fassent différents formats du nom. La partie de formatage est facile. Je ne peux pas comprendre comment retourner le travail à la main.

Voici un extrait:

public class Builder 
{ 
    public static void main(String[] args) 
    { 
     StringBuilder str1 = new StringBuilder("John"); 
     StringBuilder str2 = new StringBuilder("Que"); 
     StringBuilder str3 = new StringBuilder("Doe"); 

     ??? = entireName(str1, str2, str3); 
    } 

    public static String entireName(StringBuilder s1, StringBuilder s2, StringBuilder s3) 
    { 
     System.out.print(s1); 
     //insert.s1('4', ' ');//format stuff, not really necessary (not a problem). 
     Ststem.out.print(s2); 
     //etc.. 
     System.out.print(s3); 
     return ????; 
    } 
} 

la question des choses marquées n'est pas remblayé parce que rien que je mets là-dedans travaillé de toute façon. J'ai essayé de déclarer des chaînes séparées pour revenir en arrière. J'ai essayé de déclarer les chaînes, puis d'utiliser ces chaînes dans le constructeur de chaînes. Je n'ai rien. La partie de mise en forme de ce truc est facile. Si je ne peux pas revenir à la main, c'est faux.

J'apprécie vraiment toute aide. Je vous remercie!

+0

Ainsi, la valeur de retour de la fonction doit être "John Que Doe"? – dsolimano

+0

Pourriez-vous publier l'intégralité de cette mission? Vous déclarez: "Il veut aussi que 3 objets fassent différents formats du nom". Je pense que cela signifie que vous devez déclarer trois nouvelles classes (à tout le moins en ignorant l'héritage/interfaces) –

Répondre

3

Si l'on suppose vos impressions sont pour le débogage, vous avez besoin s1.toString() et comme

public static String entireName(StringBuilder s1, StringBuilder s2, StringBuilder s3) 
    { 
     System.out.print(s1.toString()); 
     //insert.s1('4', ' ');//format stuff, not necessary (not a problem) 
     System.out.print(s2.toString()); 
     //etc.. 
     System.out.print(s3.toString()); 
     return s1.append(s2).append(s3).toString(); 
    } 

je courais cela, et il fonctionne:

public class Builder 
{ 
    public static void main(String[] args) 
    { 
     StringBuilder str1 = new StringBuilder("John"); 
     StringBuilder str2 = new StringBuilder("Que"); 
     StringBuilder str3 = new StringBuilder("Doe"); 

     String s = entireName(str1, str2, str3); 

     System.out.println(s); 
    } 

    public static String entireName(StringBuilder s1, StringBuilder s2, 
      StringBuilder s3) 
    { 
     // debugging removed 
     return s1.append(s2).append(s3).toString(); 
    } 

} 
+0

14 secondes plus rapide = +1 –

+1

alors que cela modifie le paramètre 1 que vous ne voulez probablement pas faire, À mon avis, vous devriez Ne jamais retourner un paramètre modifié. Si vous allez modifier un paramètre, vous devriez avoir une méthode void. Il vaudrait mieux créer un nouveau StringBuilder et y retourner. – MeBigFatGuy

+0

System.out.println (StringBuffer) fonctionne. Passez-lui n'importe quel objet et il fait fondamentalement un toString sur l'objet, puis imprime les résultats. – Jay