2010-06-11 30 views
1

我试图显示输出为“1(10)2(23)3(29)”,而是得到输出为“1 2 3(10)(23)( 29)”。如果有人能看看代码并可能帮助我,我将不胜感激。我不想使用数组列表。串联输出问题(toString数组) - java

代码这个

// int[] Groups = {10, 23, 29}; in the constructor 

public String toString() 
{ 
    String tempStringB = ""; 
    String tempStringA = " "; 
    String tempStringC = " "; 

    for (int x = 1; x<=3; x+=1) 
    { 
     tempStringB = tempStringB + x + " "; 
    } 

    for(int i = 0; i < Group.length;i++) 
    { 
     tempStringA = tempStringA + "(" + Groups[i] + ")"; 
    } 
    tempStringC = tempStringB + tempStringA; 

    return tempStringC; 
} 

回答

0

你应该使用:

// int[] Groups = {10, 23, 29}; in the constructor 

public String toString() 
{ 
    String tempStringB = ""; 

    for(int i = 0; i < Group.length;i++) 
    { 
     tempStringB = (i==0?"":" ")+ tempStringB + (i+1) + " "+ "(" + Groups[i] + ")"; 
    } 
    return tempStringB; 
} 

但是,通过使用一个StringBuffer的方法是巧妙的,特别是如果你的集团做大

+3

StringBuilder的是时下首选。 – 2010-06-11 16:17:38

2

的问题是,你将所有索引附加到一个String,并将所有元素附加到另一个元素,然后连接这两个元素。

相反,尝试建立一个String(记住使用StringBuffer/StringBuilder,因为它比String串联更有效):

public String toString() { 
    StringBuilder sb = new StringBuilder(); 
    for (int i = 0; i < Groups.length; i++) { 
    sb.append(i+1).append('(').append(Groups[i]).append(')'); 
    } 
    return sb.toString(); 
} 
+0

输出“0(10)1(23)2(29)”。 – 2010-06-11 16:39:02

+0

啊,他希望以1为基础。固定。 – danben 2010-06-11 16:55:14

+0

我可以将索引放置在组件1中,然后将索引放置在2和3中,而不是0,1,2。此刻甚至认为已经创建了一个tempString来放置数组,但它实际上并不呈现组件。目前索引10,23 abd 29被放置在从0开始的分量中。是否可以将索引10放置在分量1中,索引23放在分量2中,索引29放在索引3中。显示输出“1(10)2(23) 3(29)“ – DiscoDude 2010-06-11 21:25:42