2014-08-27 4 views
1

Я хочу использовать StringBuffer вместо конкатенации строки с результатом. Я использовал этот код для преобразования цикла while, но у меня возникают проблемы с последним оператором if. Что я могу сделать, чтобы преобразовать это?Преобразование аргументов String в StringBuffer

Оригинальный код:

result = statement.executeQuery(sql);  
String string = ""; 

    while (result.next()) { 
     string += result.getString(("Hello") + ","); 
    } 

    if (string!= null && !string.isEmpty()) { 
     string= string.substring(0, string.length() - 1); 
    } 

Моя попытка:

result = statement.executeQuery(sql); 
StringBuffer string = new StringBuffer(""); 

     while (result.next()) { 
     string.append(("Hello") + ",") 
     } 

     if { 
     --- CODE HERE --- 
     } 

Любая помощь?

+0

Что вы пытаетесь сделать? – markspace

+1

Просто примечание '((« Hello ») +«, »)' просто будет оцениваться как «Hello», « – kingdamian42

+0

Избегайте конкатенации строк с помощью« + = », но вместо этого используйте StringBuffer для конкатенации. Я знаю, как добавить его, как моя попытка выше, моя единственная проблема заключается в том, как преобразовать оператор if внизу, чтобы использовать его с помощью StringBuffer вместо String? –

ответ

2

Если вы просто пытаетесь удалить последнюю запятую, попробуйте следующее:

StringBuffer buffer = new StringBuffer(""); 
... 
if (buffer.length() > 0) { 
    buffer.deleteCharAt(buffer.length() - 1); 
} 
+0

@markspace, скорее всего, '', '' предполагается за пределами некоторых скобок ... – ajb

+0

@ajb Да, я был очень смущен. В этом коде есть несколько действительно сомнительных идей, я думаю, что, возможно, OP не расшифровал его хорошо. – markspace

+0

@markspace Я согласен, даже не заметил, что заявление 'if' технически бесполезно в вопросе OPs - интересно, если он будет звонить и говорить то, что он действительно хочет – tobii

0

Вот что вы можете сделать с вашей, если заявление.

result = statement.executeQuery (sql);

StringBuffer stringBuffer = новый StringBuffer ("");

while (result.next()) { 
    stringBuffer.append(("Hello") + ",") 
    } 

    if (stringBuffer.length()>0) { 
     stringBuffer = new StringBuffer(stringBuffer.substring(0, stringBuffer.length() - 1)); 
    } 
+0

Зачем использовать 'toString()' вместо проверки длины буфера? Объект существует, потому что он создал его прямо выше, поэтому нулевая проверка ничего не делает, и существует метод 'length()' на 'StringBuffer' – kingdamian42

+0

Спасибо за @ kingdamian42 за предложения. – Start0101End

1
result = statement.executeQuery(sql);  
    StringBuffer buffer = new StringBuffer(); 

    int length = result.size(); 

    if(result != null && length > 0) 
    { 
     while (result.next()) { 
      buffer.append(result.getString(("Hello")); 
      if(--length > 0) 
       buffer.append(","); 
     } 
    }