2013-03-30 33 views
2

我有3個按鈕:「Q」,「W」和「E」。點擊時,他們應該將他們的信附加到StringBuilder。就像這樣:設置StringBuilder

StringBuilder s = new StringBuilder(); 

(當點擊 「Q」 鍵):

s.append("q"); 

(當 「W」 鍵點擊):

s.append("w"); 

但我要的是有最多3個字符在StringBuilder之內。 達到鍵的初始字符後的3位數字在末端刮水器上按下並寫入新的一個。在StringBuilder達到三個字符後,它將刪除最初的一個並追加下一個。像跑馬燈一樣。 實施例:

StringBuilder is "QWW", 
When E button clicked StringBuilder must be "WWE". 
When W button clicked StringBuilder must be "WEW". 
+4

我討厭寫這個...但是...有什麼你試過了嗎? – Maroun

+1

@MarounMaroun哈哈..我也是..所以二呃你有什麼試過...? –

+0

添加到@MarounMaroun,您是否有示例代碼,以便我們可以幫助您解決此問題? – justderb

回答

0

使用StringBuilder#deleteCharAt(int index)

public static void addToStringBuilder(StringBuilder sb, int max, char letter) 
{ 
    if(sb.length() >= max) sb.deleteCharAt(0); 
    sb.append(letter); 
} 

例如:

StringBuilder sb = new StringBuilder(); 
addToStringBuilder(sb, 3, 'Q'); 
System.out.println(sb); 
addToStringBuilder(sb, 3, 'W'); 
System.out.println(sb); 
addToStringBuilder(sb, 3, 'W'); 
System.out.println(sb); 
addToStringBuilder(sb, 3, 'E'); 
System.out.println(sb); 
addToStringBuilder(sb, 3, 'W'); 
System.out.println(sb); 

OUTPUT:

Q 
QW 
QWW 
WWE 
WEW 
0

這裏你去:

StringBuilder sBuilder = new StringBuilder(); 
public void prepareBuilder(String str) 
{ 
    if (sBuilder.length() < 3) 
    sBuilder.append(str); 
    else 
    { 
    sBuilder.deleteCharAt(0); 
    sBuilder.append(str); 

    } 
} 
1

的另一種方法是使用字符數組

char[] arr = new char[]{'','',''}; 
... 
private void appendChar(char a){ 
    for(int i=0;i<arr.length-1;i++){ 
    arr[i] = arr[i+1]; 
    } 
    arr[arr.length-1] = a; 
} 

最後:

String res = new String(arr);