首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >爪哇牌游戏。如何调用main

爪哇牌游戏。如何调用main
EN

Stack Overflow用户
提问于 2017-04-19 01:43:07
回答 1查看 268关注 0票数 1

这个程序的目的是创建一套卡片和方法的名称是不言而喻的。我认为我所有的方法都是正确的,但我需要对它们进行总体测试,我不确定如何测试它们。我对对象、数组和直方图都很陌生。任何关于如何测试一些数组/直方图方法的示例都会有帮助。只是试着学习和理解。谢谢!

例如,我想测试的方法之一是printDeck。所以总的来说,我输入了“printDeck(甲板)”,但是它需要知道从哪里得到甲板,我对如何做到这一点感到困惑。

代码语言:javascript
复制
class Cards {
int suit, rank;


public Cards() {
    this.suit = 0;
    this.rank = 1;
}


public Cards(int suit, int rank) {
    this.suit = suit;
    this.rank = rank;
}

public static int compareCard (Cards c1, Cards c2) {
    if (c1.suit>c2.suit) return 1;
    else if (c1.suit<c2.suit) return-1;
    else {
        if (c1.rank == 1)c1.rank = 14; 
        if (c2.rank == 1)c2.rank = 14;
        if (c1.rank>c2.rank) {
            if (c1.rank == 14)c1.rank = 1;
            return 1;
        } else if (c1.rank<c2.rank) {
            if (c2.rank == 14)c2.rank = 1;
            return -1;
        } else {
            if (c1.rank == 14)c1.rank = 1;
            if (c2.rank == 14)c2.rank = 1;
            return 0;
        }
    }
}


public static void buildDeck () {
    Cards[] deck = new Cards[52];
    int i = 0;
    for (int s = 0; s<4; s++) {
        for (int r = 1; r<14; r++) {
            deck[i] = new Cards(s, r);
            i++;
        }
    }
}


public static int handScore (Cards[] ar) {
    int x = 0;
    for (int i =0; i< ar.length; i++) {
        if (ar[i].rank > 10) x += (ar[i].rank-10);
    }
    int result = 0;
    for (int i =0; i< ar.length; i++) {
        result += ar[i].rank;
    }
    return result-x;
}


public static Cards parseCard(String s) {
    Cards emptyCard = null;
    String[] suits = {" ", "Clubs", "Diamonds", "Hearts", "Spades"};
    String[] ranks = {"n", "Ace", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "Jack", "Queen", "King" };
    String sr = s.substring(0, s.indexOf(' '));
    String ss = s.substring (s.lastIndexOf(' ')+1, s.length()-1);
    int holdRank = 0;
    for (int i=0; i<ranks.length; i++) {
        if (ranks[i].equals(sr)) holdRank = i;
    }
    if (holdRank == 0) return emptyCard;
    int holdSuit = 0;
    for (int i=0; i<suits.length; i++) {
        if (ranks[i].equals(sr)) holdSuit = i;
    }
    if (holdSuit == 0)return emptyCard;
    Cards result = new Cards (holdSuit-1, holdRank);
    return result;
}

public static int[] suitHist (Cards[] ar) {
    int[] hist = {0, 0, 0, 0};
    for (int i = 0; i<ar.length; i++) {
        hist[ar[i].suit]++;
    }
    return hist;
}


public static boolean isFlush (Cards[] ar) {
    int[] h = suitHist(ar);
    if (h[0] > 4 || h[1] > 4 || h[2] > 4|| h[3] > 4) return true;
    else return false;
}


public static void printCard (Cards 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]);
} 

public static void printDeck (Cards[] deck) {
 for (int i=0; i<deck.length; i++) {
 printCard (deck[i]);
 }
}

public static void main(String[] args) {

}

}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-04-19 01:48:10

我想我所有的方法都是正确的,

不完全..。

你建造甲板的方法实际上应该给你一个已建好的甲板。

代码语言:javascript
复制
public static Card[] buildDeck ()  {
   ... 
    return deck;
} 

这应该能帮你弄到一个主甲板。

代码语言:javascript
复制
Card[] cards = buildDeck();
printDeck(cards);

测试程序的正确方法,通常是单元测试,而不是主要方法。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43484888

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档