2014-12-01 7 views
-2

나는 블랙 잭을 만들고 카드 클래스를 만들었습니다. 내 카드 클래스 작동하지만 값 집합 접근자가 값 배열을 검색하고 값 인수가 유효한지 확인해야합니다. 어떻게하는지 잘 모르겠습니다. 어떤 도움이 여기에 배열의 값을 검색하고 값이 올바른지 확인하십시오.

내가 제공된 값이 허용되는 경우

private class Card 
{ 
    public enum SUIT 
    { 
     HEARTS, 
     SPADES, 
     DIAMONDS, 
     CLUBS 
    }; 

    private SUIT _suit; 
    private String _value; 

    public Card(SUIT suit, String value) 
    { 
     _suit = suit; 
     _value = value; 
    } 

    private String[] values = 
    {"A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K"}; 

    public SUIT Suit 
    { 
     get { return _suit; } 
     set { _suit = value; } 
    } 

    public String Value 
    { 
     get { return _value; } 
     set { _value = value; } 
    } 
} 
+1

linq [Contains] (http://msdn.microsoft.com/en-us/library/bb352880%28v=vs.100%29.aspx) 방법 –

+0

을 확인하십시오. 누군가가'Card.Value = "some value"; "어떤 값"이'Card.values' 배열에 포함되어 있는지 확인하고 싶습니까? – mason

+0

당신은 모든 것이 사소한 것처럼 보이기 때문에 유효한 값을 확인하는 것과 관련된 문제가 무엇인지 더 설명 할 수 있습니까? 잘못된 값을받는 방법을 어떻게 처리해야할지 모르십니까? – HugoRune

답변

1

가 내가 '는 IEnumerable

Contains() 방법을 사용할 수 있습니다, 확인하려면 내 카드 클래스가 무엇을 충당 될 것이다 d는 values보다 나은 변수 이름을 권장합니다. 어때요 validValues 어때요?

private String[] validValues = 
    {"A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K"}; 
public String Value 
{ 
    get { return _value; } 
    set 
    { 
     if (validValues.Contains(value)) 
      _value = value; 
     else 
      throw new InvalidOperationException(); //or whatever you like 
    } 
} 
4

한 가지 방법뿐만 아니라 가치에 대한 enum을 사용하는 것입니다 :

public enum Value 
{ 
    Two, 
    Three , 
    Four, 
    Five, 
    Six, 
    Seven, 
    Eight, 
    Nine, 
    Ten, 
    Jack, 
    Queen, 
    King, 
    Ace, 
}; 

public Value Value 
{ 
    get { return _value; } 
    set { _value = value; } 
} 

을 디자인 참고로, 카드 인스턴스의 값이 변경되지해야하기 때문에, 더 나은 디자인하는 것 생성자에서 양수와 값만 설정하고 속성을 읽기 전용으로 설정하십시오. Factory Pattern을 사용하는 것도 좋겠지 만 지금은 원하는 것보다 더 고급 일 수 있습니다 (이해하지 못하면 사용하지 마십시오).

+1

또한 Ace = 1을 만들고 싶을 수도 있습니다. 가치! –

+0

@RufusL 11의 값을 가짐 (이전 값인 10보다 1) –

+0

아, 처음에는 알지 못했습니다 ... –

관련 문제