2013-03-30 5 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 lol..Me тоже .. Так что Erkan, что ты пробовал ...? –

+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); 

ВЫХОД:

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); 
Смежные вопросы