创建一个随机卡片数组。使用toString方法(未排序)在格式化的打印语句中输出此数组。使用选择排序对数组进行排序。从牌组中最高的牌到最低的牌排序。按字母顺序递增:梅花(最低),然后是钻石、红桃和黑桃(最高)。牌组中最高的牌是黑桃王牌,最低的牌是2个梅花。使用toString方法输出已排序的数组。同时打印出迭代次数
我是一个初学者,需要帮助,这里是一些我开始。
public class DeckOfCards2 {
public static void main(String[] args) {
int[] deck = new int[52];
String[] suits = {"Spades", "Hearts", "Diamonds", "Clubs"};
String[] ranks = {"Ace", "2", "3", "4", "5", "6", "7", "8", "9", "10", "Jack", "Queen", "King"};
// Initialize cards
for (int i = 0; i < deck.length; i++) {
deck[i] = i;
}
// Shuffle the cards
for (int i = 0; i < deck.length; i++) {
int index = (int)(Math.random() * deck.length);
int temp = deck[i];
deck[i] = deck[index];
deck[index] = temp;
}
// Display the all the cards
for (int i = 0; i < 52; i++) {
String suit = suits[deck[i] / 13];
String rank = ranks[deck[i] % 13];
System.out.println( rank + " of " + suit);
}
}
}
这看起来像是一项任务,所以我不会直接给你答案,但我可以为你指出大部分问题的正确方向,这样你就可以自己解决。
首先,你需要在你的类中使用toString方法。它们通常如下所示:
public String toString(array[]){
// your code here
return text;
}
该方法接受一个数组参数(这是您需要打印的数据)。在这里面,您可能需要某种for循环或thon-循环,只是为了循环遍历数组并将每个元素添加到字符串实例变量中,使用类似的东西
text = text + array[i];
这样,您可以将数组中的每个值添加到字符串中,然后返回该字符串。
接下来,问题是必须创建一个“随机卡的随机数组”。你已经有了生成随机卡片的代码。相反,您需要将结果添加到新的随机数组中,而不是打印出来。这是你的未排序阵列。在你的主要方法中,你可以按照
// prints out unsorted array
System.out.println(toString(array));
其中array是随机未排序数组的名称。
接下来开始创建排序数组的过程。阅读更多关于选择排序的示例代码:http://www.javatpoint.com/selection-sort-in-java
正如上面的问题所说,确保计算迭代次数。这可以通过递增的计数变量轻松实现。
count++;
数组排序后,只需像之前一样将其发送到toString()方法,然后确保打印出计数变量。
你的随机化方法有效:)你只需要添加排序。试试这样:
public static void main(String[] args) {
int[] deck = new int[52];
String[] suits = {"Spades", "Hearts", "Diamonds", "Clubs"};
String[] ranks = {"2", "3", "4", "5", "6", "7", "8", "9", "10", "Jack", "Queen", "King","Ace"};
// Initialize cards
for (int i = 0; i < deck.length; i++) {
deck[i] = i;
}
// Shuffle the cards
for (int i = 0; i < deck.length; i++) {
int index = (int)(Math.random() * deck.length);
int temp = deck[i];
deck[i] = deck[index];
deck[index] = temp;
}
// Display the all the cards
for (int i = 0; i < 52; i++) {
String suit = suits[deck[i] / 13];
String rank = ranks[deck[i] % 13];
System.out.println( rank + " of " + suit);
}
System.out.println("------------------------------");
for(int i=0;i<deck.length;i++){
for(int j=i;j<deck.length;j++){
if(deck[j]==51-i){
int temp = deck[i];
deck[i] = deck[j];
deck[j] = temp;
}
}
}
// Display the all the cards
for (int i = 0; i < 52; i++) {
String suit = suits[deck[i] / 13];
String rank = ranks[deck[i] % 13];
System.out.println( rank + " of " + suit);
}
}
我已经完成了完美洗牌的几乎所有java代码。我只是在与错误作斗争:“线程“main”java.lang.ArrayIndexOutOfBoundsException中的异常:索引26长度26在cards\u shuffle.main(cards\u shuffle.java:72)”此错误指的是行: 洗牌牌组的上半部分: 黑桃4黑桃10钻石8黑桃A钻石4红桃J红桃Q黑桃Q黑桃4钻石J黑桃K红桃K红
这是我关于堆栈溢出的第一个问题,所以如果我的问题中有一个新手错误,请原谅,请随时更正,因为我计划在未来几个月内更多地使用此网站。 不管怎样,我是高中12年级的学生,我被一个家庭作业问题卡住了。所以基本上我们被分配了一个创建战争游戏(纸牌游戏)的项目,我们被要求每天做一小部分。到目前为止,直到今天一切都很顺利,因此我向你们提出了这个问题。 以下是该项目的内容: 卡片 它有什么: 私有int值:卡的值
问题内容: 我有一个上课的实验室(我们可以寻求外部帮助)来制作克朗代克单人纸牌。在编程方面,我是个菜鸟(这是我有史以来第一次上编程课)。我们刚刚了解了枚举,我必须使用它们来构建一个平台(我已经查看了有关此问题的其他问题,但是我还没有找到符合我需要的解决方案)。我们有两个枚举(等级和级别): 和 现在,我需要将它们组合到一个名为Deck的数组中,其形式如下: 为了将卡片放入卡座,我一直在尝试使用“
本章选择纸牌作为研究对象的原因是,牌堆是一个很明显的纸牌向量的应用。 这是创建一副52张牌组成的新牌堆的代码: apvector<Card> deck (52); 这是对象的状态图: 三个点代表我不想画出的48张牌。记住,我们尚未初始化纸牌实例变量。有些环境中,它们会初始化为0,就像图中这样,而在其他环境中它们可能包含任何可能的值。 一种初始化方法是,以一个Card对象为第二个参数调用向量的构造
我试图用Java实现纸牌游戏“Skat” 规则: 有32张卡片。每张牌在游戏中只存在一次。 颜色有:梅花、黑桃、红心、钻石 价值观是:王牌,国王,王后,杰克,十,九,八,七 那些牌被洗牌了。有三名球员 第一轮:每位玩家有3张牌。然后将两张卡片放入Skat。 第二轮:每位玩家再获赠4张牌。 第三轮:每位玩家再获得3张牌。 期望输出:每个玩家的牌都被展示(每张牌都应该存在一次) 我的产量:钻石七(32
如果你对玩纸牌尚不熟悉,那最好现在就去拿一副,否则你会感觉这一章没什么意思。一副牌有52张,每张都有一个花色(4种花色之一)和大小(13个值之一)。按桥牌中下降的顺序排列,4种花色分别是黑桃(Spades)、红桃( Hearts)、方块(Diamonds)和梅花(Clubs)。大小包括A、2、3、4、5、6、7、8、9、10、J、Q和K。根据不同纸牌游戏的规则,A可能比K大,也可能比2小。 如果要