system.out объекта в строку
Очень плохо знаком с Java, поэтому вся помощь приветствуется, но, пожалуйста, дайте более прямой ответ.
Я пытаюсь изменить оператор System.out.println на оператор, который будет отображаться в панели JOptionPane. Это моя первая попытка в GUI, и я безнадежно потерян.
У меня есть строки, которые печатаются через несколько методов, чтобы отобразить один фрагмент вывода. Часть вывода, которую я хочу разместить в одной панели, поэтому я думаю, что самый простой способ - это объединить строку.
У меня есть жесткий диск ArrayList, который содержит значение карты. Я перегрузил метод toString в Card для рангов, и перечисление Suit, которое использует Card, возвращает Strings ("Heart", Spade"и т. Д.)
for(int x = 0; x < hand.size(); x++){
System.out.println(hand.get(x));
} //correctly prints the code
Я пытался сделать String handString = "";
for(int x = 0; x < hand.size(); x++){
handString = handString.concat(hand.get(x)); //also tried concat(toString(hand.get(x))
}
Может кто-нибудь сказать мне, почему я не могу изменить Card toString и почему она печатает на консоль, но почему я не могу поместить ее в строку? Я чувствую, что это очень очевидно, но ничего, что я могу найти в Интернете, похоже, не поможет с моей комбинацией перечислений и объектов класса.
Кроме того, как бы мне было превратить несколько печатных изданий в консоль в одну печатную форму в JOptionPane?
2 ответа
Ты можешь попробовать:
for(int x = 0; x < hand.size(); x++){
handString += hand.get(x);
handString += "\n";
}
Оператор plus(+) заботится о преобразовании в String (используя метод toString() для объектов, которые вы переопределили).
Вы также можете использовать цикл foreach здесь (намного короче, хотя и с личными предпочтениями):
for (Card card : hand) {
handString += card;
handString += "\n";
}
Вы можете явно позвонить .toString()
на карте-объекте:
for(int x = 0; x < hand.size(); x++){
handString = handString.concat(hand.get(x).toString());
}
После этого, конечно, вам также необходимо обновить все, что связано с handString
,
Более чистая версия:
for (Card c : hand) {
handString += c;
}