在Java中改组
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了在Java中改组,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3550字,纯文字阅读大概需要6分钟。
内容图文
![在Java中改组](/upload/InfoBanner/zyjiaocheng/675/c7a3d36faf3447c6bf6f26a6ea84409f.jpg)
我还有另一项练习,我确实需要帮助.我什至不知道我的isFlush方法是否正常工作,因为出于某种原因,我的牌组没有洗牌并没有出牌,我完全卡住了.有人可以帮助我或为我指明正确的方向吗?这是练习:
练习12.5本练习的目的是编写一个生成
随机扑克手并对其进行分类,以便我们可以估计
各种扑克手.如果您不玩扑克,请不要担心;我会告诉你一切
你得知道.
一种.作为热身,编写一个使用shuffleDeck和subdeck生成的程序
并随机打印四手扑克牌,每手五张牌.你有东西吗
好?以下是按价值升序排列的可能的扑克手:
对:两张同等级的卡
两对:两对同等级的牌
三种:相同等级的三张牌
直牌:五张顺序排列的牌
同花:五张相同的牌
满屋子:三张一张,另一张一张
四种:同一等级的四张牌
同花顺:顺序排列的五张相同牌
b.编写一个名为isFlush的方法,该方法将Deck作为参数并返回一个
布尔值,指示手是否包含同花.
C.编写一个名为isThreeKind的方法,该方法需要帮助并返回一个布尔值
指示那只手是否包含同类三只.
d.编写一个循环,生成几千只手并检查它们是否
包含一个或三个同花顺.估计获得以下之一的可能性
那些手.
e.编写测试其他扑克手的方法.有些比其他容易.
您可能会发现编写一些通用的辅助方法很有用,这些方法可以
用于多个测试.
F.在某些扑克游戏中,玩家每人获得7张牌,他们与
七个中最好的五个.修改程序以生成七张牌
并重新计算概率.
这是我的代码:
public class Poker {
public static void main(String[] args) {
Deck deck = new Deck ();
Deck.dealDeck (deck);
}
}
class Card {
int suit, rank;
int index = 0;
//Card[] deck = new Card [52];
public Card () {
this.suit = 0; this.rank = 0;
}
public Card (int suit, int rank) {
this.suit = suit; this.rank = rank;
}
public static void printCard (Card c) {
String[] suits = { "Clubs", "Diamonds", "Hearts", "Spades" };
String[] ranks = { "narf", "Ace", "2", "3", "4", "5", "6",
"7", "8", "9", "10", "Jack", "Queen", "King" };
System.out.println (ranks[c.rank] + " of " + suits[c.suit]);
}
}
class Deck {
Card[] cards;
public Deck (int n) {
cards = new Card[n];
}
public Deck () {
cards = new Card[52];
int index = 0;
for (int suit = 0; suit <= 3; suit++) {
for (int rank = 1; rank <= 13; rank++) {
cards[index] = new Card (suit, rank);
index++;
}
}
}
public static Deck dealDeck(Deck deck){
shuffle(deck);
Deck hand1 = subDeck(deck, 0, 4);
Deck hand2 = subDeck(deck, 5, 9);
Deck hand3 = subDeck(deck, 10, 14);
Deck hand4 = subDeck(deck, 15, 19);
Deck pack = subDeck(deck, 20, 51);
return deck;
}
public static Deck shuffle(Deck deck){
for (int i = 0; i < 52; i++){
int rand = (int)(Math.random()*(i + 1));
**Deck[] temp = deck[i];
deck[i] = deck[rand];
deck[rand] = deck[temp];**
}
return deck;
}
public static Deck subDeck(Deck deck, int low, int high) {
Deck sub = new Deck (high-low+1);
for (int i = 0; i < sub.cards.length; i++) {
sub.cards[i] = deck.cards[low+i];
}
return sub;
}
public static void printDeck (Deck hand) {
for (int i = 0; i < hand.cards.length; i++) {
Card.printCard (hand.cards[i]);
}
}
public static boolean isFlush(Card[] x, int y) {
int count = 0;
for(int index = 0; index < y; index++){
boolean comp = compareIfFlush(x[index], x[index + 1]);
if (comp = true){
count++;
}
}
if (count >= 5){
System.out.println("Congratulations! You have a flush!");
return true;
}
else{
System.out.println("Sorry, you do not have a flush.");
return false;
}
}
public static boolean compareIfFlush(Card c1, Card c2){
if (c1.suit != c2.suit){
return false;
}
return true;
}
}
我将遇到麻烦的部分加粗了.我收到错误:“需要数组,但找到了execution125poker.Deck”.我需要解决此错误,因为我不知道如何解决它,所以我被卡住了.有人可以帮忙吗?
解决方法:
您的Deck类型不是数组类型.它有一个数组,但是您不能像一个数组那样使用它-这是产生错误的原因.考虑一下…如果您的牌组中有两张[52]卡怎么办?那么,如果您致电deck [25],那将毫无意义.通常,当您将数组隐藏在对象内部时,您将希望使用公共Card get(int i)之类的访问器方法公开该数组,以从内部数组中检索元素.
内容总结
以上是互联网集市为您收集整理的在Java中改组全部内容,希望文章能够帮你解决在Java中改组所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。