一副扑克牌我想用数组的方法
时间: 2024-05-29 07:14:25 浏览: 60
使用数组来表示一副扑克牌可以采用以下方法:
1. 定义一个一维数组来存储扑克牌的点数和花色。例如,可以定义一个长度为 52 的数组 cards,其中前 13 个元素表示点数为 A、2、3、4、5、6、7、8、9、10、J、Q、K 的方块牌,接着的 13 个元素表示点数为 A、2、3、4、5、6、7、8、9、10、J、Q、K 的梅花牌,再接着的 13 个元素表示点数为 A、2、3、4、5、6、7、8、9、10、J、Q、K 的红桃牌,最后的 13 个元素表示点数为 A、2、3、4、5、6、7、8、9、10、J、Q、K 的黑桃牌。
2. 定义一个二维数组来存储扑克牌的点数和花色。例如,可以定义一个大小为 4x13 的数组 cards,其中第一行表示方块牌,第二行表示梅花牌,第三行表示红桃牌,第四行表示黑桃牌,每行的 13 个元素分别表示点数为 A、2、3、4、5、6、7、8、9、10、J、Q、K 的牌。这种方法可以更方便地遍历一副扑克牌,例如可以使用两个循环来遍历整副牌:for (int i = 0; i < 4; i++) { for (int j = 0; j < 13; j++) { // 处理 cards[i][j] 这张牌 } }
以上两种方法都可以用来存储一副扑克牌,具体实现取决于具体的需求和应用场景。
相关问题
用java帮我写一个扑克牌类,他有这些属性//扑克牌类 //属性:花色,点数 //方法: //无参构造方法、有参构造方法、get、set、toString //一副扑克牌类 //属性:54张扑克牌:数组 //方法: //构造方法:完成54张扑克牌的初始化 //print //洗牌
好的,以下是Java实现的扑克牌类的代码:
```java
public class Poker {
private String suit; // 花色
private int number; // 点数
public Poker() {
}
public Poker(String suit, int number) {
this.suit = suit;
this.number = number;
}
public String getSuit() {
return suit;
}
public void setSuit(String suit) {
this.suit = suit;
}
public int getNumber() {
return number;
}
public void setNumber(int number) {
this.number = number;
}
@Override
public String toString() {
return suit + number;
}
}
```
以下是一副扑克牌类的代码:
```java
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class PokerDeck {
private List<Poker> deck;
public PokerDeck() {
deck = new ArrayList<>();
String[] suits = {"♠", "♥", "♦", "♣"};
for (String suit : suits) {
for (int i = 1; i <= 13; i++) {
deck.add(new Poker(suit, i));
}
}
deck.add(new Poker("", 14)); // 小王
deck.add(new Poker("", 15)); // 大王
}
public void shuffle() {
Collections.shuffle(deck);
}
public void print() {
for (Poker poker : deck) {
System.out.print(poker.toString() + " ");
}
System.out.println();
}
}
```
其中,`PokerDeck` 类中使用了 `java.util.Collections` 库中的 `shuffle()` 方法实现洗牌,`print()` 方法用于打印整副扑克牌。
c#创建字符串数组,长度为54,存放一副扑克牌
在C#中创建一个长度为54的字符串数组来存放一副扑克牌,首先需要知道一副完整的扑克牌包括52张普通牌和2张王牌(例如大王和小王)。每张牌可以用两个字符表示,第一个字符代表牌的花色('H'代表红心、'D'代表方块、'C'代表梅花、'S'代表黑桃),第二个字符代表牌的数值('A'代表A,'2'到'10'代表2到10,'J'、'Q'、'K'分别代表J、Q、K)。大王和小王可以用特殊字符表示,例如'JOKER'。
下面是创建这样一个数组的示例代码:
```csharp
string[] pokerDeck = new string[54];
// 初始化普通牌
for (int i = 0; i < 52; i++)
{
int suit = i / 13; // 花色从0到3
int value = i % 13; // 牌值从0到12
char suitChar = ' ';
char valueChar = ' ';
switch (suit)
{
case 0: suitChar = 'H'; break; // 红心
case 1: suitChar = 'D'; break; // 方块
case 2: suitChar = 'C'; break; // 梅花
case 3: suitChar = 'S'; break; // 黑桃
}
switch (value)
{
case 0: valueChar = 'A'; break;
case 1: valueChar = '2'; break;
case 2: valueChar = '3'; break;
case 3: valueChar = '4'; break;
case 4: valueChar = '5'; break;
case 5: valueChar = '6'; break;
case 6: valueChar = '7'; break;
case 7: valueChar = '8'; break;
case 8: valueChar = '9'; break;
case 9: valueChar = '10'; break;
case 10: valueChar = 'J'; break;
case 11: valueChar = 'Q'; break;
case 12: valueChar = 'K'; break;
}
pokerDeck[i] = suitChar + valueChar;
}
// 初始化两张王牌
pokerDeck[52] = "JOKER"; // 大王
pokerDeck[53] = "JOKER"; // 小王
```
在这段代码中,我们首先声明了一个长度为54的字符串数组`pokerDeck`。然后,通过两层嵌套的循环,分别计算出每张普通牌的花色和数值,并转换为对应的字符赋值给数组。最后,将两张王牌也添加到数组的最后两个位置。
阅读全文