Застрял в моей домашней работе на Java - игра Hangman с StringBuilder - помогите? - PullRequest
4 голосов
/ 16 ноября 2010

* ПРИМЕЧАНИЕ: Я не прошу вас делать мои домашние задания. Я просто застрял.

Я сейчас занимаюсь разработкой класса Hangman. По-видимому, нам нужно три StringBuilders (a) один для отображения дефисов: "--------" длина слова, b) один для отображения правильных предполагаемых букв: "--a--e---" и, наконец, c) другой, который по существу противоположен b угаданные буквы заменены дефисами, а угаданные буквы выявлены). Цель c) - увидеть, есть ли совпадения во время угадывания.

Моя самая большая проблема в том, что я не могу найти много практических примеров StringBuilder в Google, а именно моя самая большая проблема - где я могу / должен создать три экземпляра StringBuilder в классе Hangman?

спасибо ...

Ответы [ 4 ]

2 голосов
/ 16 ноября 2010

Я предполагаю, что у вас есть класс Hangman, который работает как модель, которая выполняет три вещи (соответствующие для этого), а именно:

  • Дает вам строку с одним - для каждого символав слове угадать
  • Дает вам строку, которая показывает правильно угаданные символы в правильном положении
  • Дает вам строку, которая показывает, какие символы были использованы

Все они зависят от состояния модели, которое будет

  • слово
  • символы угаданы

Исходя из этого, я бы сказал, чтоу вас должно быть три метода, которые возвращают Strings, и в каждом из этих методов вы создаете новый экземпляр StringBuilder.Построение строки отделено от состояния только для того, чтобы понять, почему я не согласен с Computerish.

StringBuilder - более эффективный способ построения строк, чем просто использование конкатенации, но он прост в использовании.Вы начинаете с создания его экземпляра.

StringBuilder builder = new StringBuilder();

Затем вы строите строку, добавляя строки или символы (или другие вещи):

builder.append('-');
builder.append('w');

Когда вы закончите, вы создаетеэкземпляр String из StringBuilder:

String string = builder.toString();

, и вы получите «-w», что является довольно скучным примером.

0 голосов
/ 16 ноября 2010

Цель StringBuilder - создать строку непосредственно перед ее использованием. Они должны создаваться заново каждый раз (это хорошая практика для более сложных проблем). Поэтому вместо того, чтобы думать о классе stringbuilder, подумайте, а не как создать нужную вам строку. Предполагая, что вы храните правильные догадки в массиве char, вы можете иметь три метода, которые строят строку по мере необходимости. В одном из этих случаев вам вообще не нужен StringBuilder.

Ваш ToBlankFormat метод может выглядеть следующим образом:

public String toBlankFormat()
{
    char[] format = new char[answer.length()];
    Arrays.fill(format, '-');
    return new String(format);
}

По сути, для использования StringBuilder все, что вам нужно сделать, это добавить строки, символы и т. Д., А затем вызвать метод ToString(). Пример будет выглядеть так:

public String example()
{
    StringBuilder builder = new StringBuilder("Hello"); // initial value

    if (addSpaces)
    {
        builder.append(" ");
    }

    builder.append("World");
    return builder.ToString();
}
0 голосов
/ 16 ноября 2010

Краткий пример:

StringBuilder helloWorldBuilder = new StringBuilder();
helloWorldBuilder.append("Hello");
helloWorldBuilder.append(" ");
helloWorldBuilder.append("World");
helloWorldBuilder.append("!");
String helloWorld = helloWorldBuilder.toString();

И да, вы можете создать столько StringBuilder объектов, сколько захотите (при условии, что у вас неограниченная куча, но практически произнесено: «столько, сколько вы хотите»что больше 3 :-))

0 голосов
/ 16 ноября 2010

Три StringBuilders должны быть переменными экземпляра вашего класса. Вы можете создавать их экземпляры в конструкторе классов или создавать их, когда выбираете угадываемое слово.

...