java - 如何修复在 Java 中打印一副纸牌的错误?
问题描述
我的任务是创建一副卡片并以多种方式打印出来。但是我遇到了一个问题,结果是 52 张卡 x 4 次。用我的套装数组声明我的卡片 obj 可能存在一些问题,但我不知道如何解决它。任何人都可以帮忙吗?
所以基本上我做了一个卡片类,其中包含卡片/或等级、西装和脸的价值(卡片上打印的内容)。然后是一个 Deck 类,它创建一个包含 52 张卡片的数组,并添加一个 shuffle 方法。目标是在洗牌前后打印卡片。
问题出在 Deck 类中,我的构造函数循环似乎很奇怪,它打印出 x4 的结果。我试过移动一些,但不起作用。
public Deck() {
for (int i = 0; i<c.length;i++) {
for (int j =0; j<suit.length;j++) {
for (int k =0; k<face.length;k++) {
s = suit[j];
f = face[k];
switch(f) {
case "2": v=2; break;
case "3": v=3; break;
case "4": v=4; break;
case "5": v=5; break;
case "6": v=6; break;
case "7": v=7; break;
case "8": v=8; break;
case "9": v=9; break;
case "10": v=10; break;
case "Queen": v=11; break;
case "Jack": v=11; break;
case "King": v=11; break;
case "Ace": v=12; break;
}
c[i] = new Card(v,s,f);
System.out.println(c[i].toString());
}
}
}
}
预期结果:洗牌前后显示52张牌
解决方案
您正在实例化一个新的Card
实例face.length * suit.length * c.length
时间。为什么要遍历c
数组?如果您想为每张卡片创建一张并将其存储在 中c
,请执行以下操作:
int i = 0;
for (var suit : suits)
for (var face : faces)
c[i++] = new Card(suit, face);
推荐阅读
- android - 在Android中处理图像的正确方法?通过使用 Firebase
- ios - 为什么 Xcode 的添加文档不起作用?
- python-3.x - WebDriverException:消息:未知错误:使用 ChromeDriver Chrome 通过 Selenium Python 打印 HTML 内容时出现错误的检查器消息错误
- c++ - std::system_error 发生在 Protobuf ParseFromZeroCopyStream()
- pytorch - 如何在pytorch中将密集矩阵乘以稀疏矩阵元素
- javascript - Javascript:无法隐藏整个 html 行(div 标签)
- python - 在烧瓶框架中将应用程序上下文传递给 celery
- macos - 用外部符号替换 MacOS Mach-O 二进制文件中的静态符号
- java - Spring Boot 和 Hibernate:用于 org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor
- java - 这个双重检查锁的java功能版本安全吗?