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;
}
Другие вопросы по тегам