Wie konvertiert man int in enum value? [Duplikat]

8

Hier ist mein Code, der einen Fehler mit Cannot convert type "int" to Cards.Suits und Cannot convert type "int" to Cards.Rank

%Vor%

Der Kartenkonstruktor ist

%Vor%

Nun sind die Anzüge enum und Rank enum wie ein reguläres Kartenspiel, beginnend bei ACE = 1 usw. und Anzüge sind DIAMANTEN, CLUBS, HEARTS, SPADES. Kann mir jemand sagen, warum ich den obigen Fehler bekomme. Der folgende Code entnahm einem Buch. Danke!

* BEARBEITEN

%Vor%     
MikaAK 02.08.2013, 05:29
quelle

4 Antworten

2

Entsprechend Ihrer Enum-Deklaration liegt Suit im [0..3] -Bereich, während Ränge im [1..13] -Bereich liegen (achten Sie darauf, dass Ränge nicht auf Null basieren), also die innere for-Schleife sollte korrigiert werden:

%Vor%     
Dmitry Bychenko 02.08.2013 05:59
quelle
1

ändere deine Zeile wie folgt

%Vor%

und wenn Ihre Klasse Enums im Konstruktor verwendet, ändern Sie es so

%Vor%     
Ehsan 02.08.2013 05:46
quelle
0

Ich werde sehen, es wird einen anderen Fehler bekommen "Index war außerhalb der Grenzen des Arrays"

Wenn suitVal = 0 und rankVal = 0, Karten [suitVal * 13 + rankVal - 1] = -1, die außerhalb des Array-Index liegen.

    
Harris Yer 02.08.2013 06:06
quelle
0

Das läuft gut aber korrigiere das

%Vor%

Hier

  

in Karten [suitVal * 13 + rankVal - 1]

%Vor%
  

[suitVal * 13 + rankVal - 1] = [0 * 13 + 0-1] = [-1]! Hoppla!

und in Ihrem prgm:

%Vor%     
7-isnotbad 02.08.2013 10:41
quelle

Tags und Links