카드 덱에 카드 값이 나타나는 횟수를 세는 방법을 찾으려고합니다. 저는 Card와 DeckHand를위한 수업을 만들었습니다. DeckHand 클래스에서 사용자가 검색 및 계산할 카드 값을 선택할 수있는 메서드를 만들려고합니다. 이 방법을 몇 가지 시도했는데 아무 것도 작동하지 않는 것 같습니다. 어떤 아이디어?카드 덱에 카드 값이 나타나는 횟수를 카운트하는 방법
카드 등급 :
class Card {
private int _value, _suit;
private String[] _cardValues = {null, "Ace", "2", "3", "4","5", "6", "7",
"8", "9", "10", "Jack", "Queen", "King"};
private String[] _cardSuits = {null, "Clubs", "Diamonds", "Hearts", "Spades"};
public Card(int value,int suit) {
_value = value;
_suit = suit;
}
public int getCardValue() {
return _value;
}
public int getCardSuit() {
return _suit;
}
public String toString() {
return _cardValues[_value] + " of " + _cardSuits[_suit];
}
} 갑판 클래스 :
class DeckHand{
private Card[] _deckHand;
private int _deckSize;
private static final int MAXSIZE = 52;
private Card[] newDeck;
public DeckHand() {
_deckHand = new Card[MAXSIZE];
_deckSize = 0;
}
public DeckHand(int deckSize) {
_deckHand = new Card[MAXSIZE];
int index = 0;
for (int suit = 1; suit <= 4; suit++) {
for (int rank = 1; rank <= 13; rank++) {
_deckHand[index] = new Card(rank, suit);
index++;
}
}
_deckSize = deckSize;
}
public int count(int value){
int count = 0;
for (int i = 0; i<=_deckSize; i++) {
if(_deckHand[i].getCardValue()==value)
count++;
}
return count;
}
}
홈페이지 :
public class Program4 {
static Scanner keyboard = new Scanner(System.in);
public static void main(String[] args) {
int suit, value;
DeckHand standard = new DeckHand(52);
System.out.println("\nWhich card value would you like to count?");
String[] values = {null, "Ace", "2", "3", "4","5", "6", "7",
"8", "9", "10", "Jack", "Queen", "King"};
System.out.println("Card Value Options: "
+ "\n-------------------");
for(int i = 1;i<values.length; i++) {
System.out.println(i + " - " + values[i]);
}
System.out.print("\tOption: ");
value = keyboard.nextInt();
System.out.println("---------------------------"
+ "-----------------------------\n"
+ "The card value " + value appears " + standard.count(value)
+ " times in the deck."
}
나는를 선택하도록 사용자에게 요청하는 프로그램을 얻으려고 카드의 배열을 찾아 그 카드 값이 몇 번이나 나오는지 (예 : 2 또는 5) 및 th 그 번호가 사용자에게 출력된다. "그 카드 가치는이 횟수만큼 갑판에 나타납니다"). 이 오류입니다
if(_deckHand[i].getCardValue()==value)
: :이 실행하려고 할 때, 내가 가진 전부는 "그 카드 값은 갑판에서 0 번 나타납니다"또는 나는이 라인에 문제가있다라는 오류를 얻을 수있다
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 52
at program4.DeckHand.count(Program4.java:231)
at program4.Program4.main(Program4.java:101)
C:\Users\alisa_000\AppData\Local\NetBeans\Cache\8.1\executor-
snippets\run.xml:53: Java returned: 1
게시 한 코드가 정상적으로 보입니다. 정확히 무슨 일이 일어나기를 기대하는지 정확히 무슨 일이 벌어지는 지에 대해 더 구체적으로 설명하십시오. 주어진 입력과 출력을 보여줍니다. – nhouser9
명확히하지 않아서 죄송합니다. 나는 사용자가 카드 배열을 찾아 그 카드 값이 몇 번 나타나는지 (예 : 2 또는 5)를 계산 한 다음 사용자에게 출력 할 값을 선택하도록 프로그램을 요청하려고합니다. 즉 "그 카드 가치는이 횟수만큼 갑판에 나타납니다"). 그러나 이것을 실행하려고하면 "그 카드 값이 갑판에 0 번 나타납니다."라고 표시되거나이 라인에 문제가 있다는 오류가 표시됩니다. if (_deckHand [i] .getCardValue() == value) – Alisa
정확히 어떤 오류가 있습니까? 질문에 붙여 넣을 수 있습니까? – nhouser9