#java
#java
Вопрос:
Я объявил, enum
Card
который имеет getValue
метод, который возвращает int
представление с для каждого Card
(трефы, сердца и т.д.). Я заметил, что я не могу использовать
оператор в следующем операторе, потому что компилятор думает, что я выполняю операцию добавления с двумя несовместимыми типами.
Почему компилятор здесь не перегружается автоматически? Единственный способ, которым я могу отобразить это, — это если я вставлю ""
промежуточный so currentCard "" currentCard.getValue()
, принимается. Есть ли способ обойти это?
for(Card currentCard: Card.values())
System.out.println(currentCard currentCard.getValue());
Ответ №1:
Проблема, с которой вы сталкиваетесь, заключается просто в том, что оператор plus выполняет конкатенацию строк только тогда, когда строка является одним из элементов, которые добавляются вместе. Нет ничего, что заставляло бы его принимать строку только потому, что она находится внутри println.
Вот почему, как только вы добавляете туда пустую строку, она затем воспринимает это как конкатенацию строк и объединяет строковое представление каждого элемента вместе. В противном случае вы добавляете объект типа Card в int.
Итак, решите его, просто сделайте это:
System.out.println(currentCard.toString() currentCard.getValue());
Ответ №2:
вы должны убедить компилятор Java, что работаете со строками, нет никакого способа, которым компилятор может вычислить это автоматически при просмотре enum и int. лично я бы использовал:
"" currentCard currentCard.getValue()
Комментарии:
1. Я думаю, что использовать toString () понятнее, чем вставлять туда «» .
Ответ №3:
Вы можете переопределить toString()
, как предложено в Card
примере, показанном здесь. Тогда все, что вам нужно, это:
System.out.println(currentCard);