2010-06-11 54 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