플레이어가 취할 수있는 동작 중 하나가 스왑 옵션 인 카드 게임을 만들려고합니다.이 옵션은 재생중인 카드 (ArrayList의 index0에있는 요소)를 가져 와서 다른 카드로 교체합니다. 그 다른 카드의 색인은 해당 카드의 health * power를 계산하는 다른 클래스의 메소드를 호출하는 private 메소드를 통해 발견됩니다 (그리고 determinePower로 레이블 됨). 가장 높은 결정력을 가진 카드가 index0의 카드와 교환됩니다.해당 요소의 인덱스가 개인 메서드를 통해 발견되면 ArrayList의 index0에있는 요소를 다른 요소로 바꿀 수 있습니까? (Java)
지금까지 필자가 작성한 것은 메소드가 같은 유형이 아니기 때문에 오류가 있습니다. 이 기능이 작동하려면 어떻게해야합니까?
public java.lang.String swap()
{
if (playerHand.size()>1) //playerHand is the ArrayList<Card> here
{
return "-1"; //if the hand only has one card, it cannot swap with anything and must return -1
}
else
{
Card temp = playerHand.get(0); //card is an object
playerHand.set(0,playerHand.get(findCard())); //this is where the error is
playerHand.set(findCard(),temp); //error also here
}
}
이것은 메소드 swap()에서 참조되는 개인 메소드 findCard()입니다.
private java.lang.String findCard() //a method of swap that searches for the index number of the element in the array with the highest value
{
int largest = 0;
for (int i=1; i<playerHand.size(); i++)
{
if (playerHand.get(i).determiningPower()>playerHand.get(largest).determiningPower())
{
largest = i; //determiningPower is a method in a separate class that calculates the health*power. this should find which card has the highest determiningPower
}
}
return java.lang.String.valueOf(largest);
}
저는 매우 새로운 것이므로 어떤 종류의 도움이라도 대단히 감사하겠습니다!
if 문이 잘못되었습니다. 목록에 요소가 있는지 확인하고 요소가 없는지 확인하려고합니다. 그래서 '(playerhand.size()> 1)'을'playerhand.size() <1'로 변경하십시오. – Harsh
@ 그것을 지적 해 주셔서 고맙습니다! 오류는 실제로 else 문에서 발생합니다. 특히 ** .get ** 및 **. set **. 그것은 "적절한 메소드가 없습니다"라고 말했습니다. – user8638151
'findCard' 메소드는'int'를 리턴해야하지만'String' 값을 가져야한다고 생각합니다. –