2017-02-19 2 views
1

Как бы вы преобразовали функции String Buffer в String Builder. Я знаю, что эти два очень похожи, но я не могу изменить свой StringBuffer sb = new StringBuffer(); на StringBuilder sb = new StringBuilder();, не получая обилие сообщений об ошибках.String Buffer to String Builder

Вот небольшой код, который я сделал:

StringBuffer sb = new StringBuffer();  //Create a new String Buffer with nothing in it 
for (int n = 0; n < 1; n++) { 
    sb.append("Billy ");    //Add (first name) 
    sb.append("Scranner");    //Add (surname) 
    System.out.println(sb);    //Print the string buffer 
    sb.insert(5," D");     //Insert " D" at the 4th character 
    System.out.println(sb);    //Print the String Buffer with the middle initial 
    sb.delete(5, 7);     //Delete the character line from 4 to 6 
    sb.reverse();      //Reverse the String Buffer 
    System.out.println(sb);    //Print the reversed String Builder 

Я прошу прощения, если мой вопрос кажется неясным, TLDR; Я хотел бы знать, как получить тот же результат, который я получаю из этой программы, используя String Builder вместо String Buffer.

Вот что программа выводит:

Билли Scranner

Billy D Scranner

rennarcS ylliB

EDIT: Это выход я получаю, когда я заменить буфер с Строителем:

Exception in thread "main" java.lang.Error: Unresolved compilation problems: 
    The method append(String) is undefined for the type StringBuilder 
    The method append(String) is undefined for the type StringBuilder 
    The method insert(int, String) is undefined for the type StringBuilder 
    The method delete(int, int) is undefined for the type StringBuilder 
    The method reverse() is undefined for the type StringBuilder 
+1

Хотели бы вы уточнить эти сообщения об ошибках? –

+0

@JoeC Я добавлю его в сообщение, более читаемым таким образом –

+0

Не думаю, что это то, что выводит ваша программа. Там есть новые строки, и вы отменили весь буфер, а не только свое имя. –

ответ

3

Там нет ошибок в замене StringBuffer sb = new StringBuffer(); на StringBuilder sb = new StringBuilder();

import java.lang.StringBuilder; 

    StringBuilder sb = new StringBuilder(); 
    sb.append("Billy "); 
    sb.append("Scranner"); 
    System.out.println(sb); 

    sb.insert(5, " D"); 
    System.out.println(sb); 
    sb.delete(5, 7); 

    sb.reverse(); 

    System.out.println(sb); 

Выход:

Billy Scranner 
Billy D Scranner 
rennarcS ylliB 
+0

вы должны добавить вывод в виде комментариев в свой код –

+0

@MasterYushi добавил вывод. –

+0

@MasterYushi выходной будет такой же, как указано в вопросе. Зачем это повторять? Ответ охватывает часть ответа. +1 – minigeek

1

Вы должны иметь один и тот же вывод, используя StringBuffer и StringBuilder с кодом вы представляете.

Разница между StringBuffer и StringBuilder заключается в том, что StringBuffer кажется излишним, поскольку он является потокобезопасным.

Если вы получаете ошибки, может быть связано с:

  • вопросов резьбы
  • среда
  • Развитие не будучи правильно установить
  • опечаток
  • Формат файла (иногда копировать/код вставки из источника который имеет невидимые символы, препятствующие правильной компиляции файла).

Из того, что я вижу в комментариях, у вас есть невидимый конец строк или символов, которые не соответствуют правильной кодировке вашей платформы.