#java #string #class #parameters
#java #строка #класс #параметры
Вопрос:
Я пытаюсь написать классы, которые в конечном итоге станут частью более масштабной программы boggle. Один из моих классов — Tile — хранит отображаемую букву, строку и столбец, в которых она расположена на доске, и флаг, указывающий, была ли плитка выбрана игроком. У меня возникли проблемы с сохранением буквы.
Изначально я сохранил букву в виде символа — так как при создании новых объектов плитки символ передается конструктору. Однако мне также нужно иметь возможность хранить «Qu». Это наводит меня на мысль, что конструктор для Tile должен принимать букву в виде строки; однако, когда я создаю новый объект Tile и передаю ему символ, это не работает.
Например:
Tile t1 = new Tile ('d', 0, 0);
Tile t2 = new Tile ("Qu", 0, 1);
Оба они должны работать. Но я не уверен, как сохранить букву (как символ? строка?)
Ответ №1:
Если вам нужно поддерживать более одного символа, вы правы, что вам нужен String
. Однако для String
не требуется иметь более одного символа. Это вполне приемлемо:
Tile t1 = new Tile("d", 0, 0);
Я отмечу, что положение плитки на самом деле не является неотъемлемым свойством, и что-то вроде Tile[4][4]
может иметь больше смысла в целом для отслеживания положения.
Обновление: Основываясь на дополнительной информации, похоже, что плохо написанное назначение требует обоих. В этом конкретном случае используйте несколько конструкторов, подобных этому:
public Tile(char value, int x, int y) {
this(Character.toString(value), x, y);
}
Комментарии:
1. Имеет смысл. Меня беспокоит только то, что мне была предоставлена программа-драйвер, в которой некоторые объекты Tile были созданы с использованием символа (например, new Tile (‘d’, 0, 0)), в то время как объекты, созданные с помощью Qu, были созданы со строками (new Tile(«qu», 0, 1)). Может быть, ошибка в программе драйвера? Или я должен иметь возможность принимать оба символа или строки? Например, в программе драйвера объекты Tile представляют собой ArrayList и присутствует следующий код : tiles.add(новая плитка(«qu»,0,0)); tiles.add(новая плитка(‘i’,0,1)); tiles.add(новая плитка(‘e’,0,2)); tiles.add(новая плитка(‘t’,0,3));