A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

学习Java,不仅仅是技术,还有思维
例题:抽取扑克牌并打印
•模拟在一副扑克牌中,抽取第x张,第y张,第z张牌
•代码实现:花色+点数(例:红桃5)

由于之前已经练习过打印扑克牌(四种花色+A~K点数的组合)
第一反应就是将先前的代码拷贝,并将遍历打印改为抽样打印并输出
public static void main(String[] args) {
        getCards(5,17,51);
    }
    static void getCards(int num1,int num2,int num3) {
        String[] point = new String[]{"A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K"};
        String[] suit = new String[]{"黑桃", "梅花", "红心", "方块"};
        for (int i = 0; i < suit.length; i++) {
            for (int j = 0; j < point.length; j++) {
            }
        }
        System.out.print(suit[num1/13]+point[(num1-1)%13]+" ");
        System.out.print(suit[num2/13]+point[(num2-1)%13]+" ");
        System.out.print(suit[num3/13]+point[(num3-1)%13]+" ");
    }
}
结果可以实现题目要求,但漏洞甚多:
1.        脱离实际,一副扑克牌含有54张牌,因拷贝之前的练习,遗漏大小王这2张牌
2.        打印输出时并没有利用数组下标这一特点进行因素提取,通过人为运算公式进行排序
3.        若需要提取并打印的因素较多,改动也比较大,过程繁琐

后根据参考进行更改优化
public static void main(String[] args) {
//获取一副扑克牌
    String[] card = getCard();
//确定需要抽取的牌
    int a=5,b=17,c=54;
    String[] cards=getCards(card,a,b,c);
//打印抽取的牌
    for (int i = 0; i < cards.length; i++) {
        System.out.println(cards[i]+" ");
    }
}
//制作一副扑克牌
static String[] getCard() {
    String[] suit = new String[]{"黑桃", "梅花", "红心", "方块"};
    String[] point = new String[]{"A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K"};
    String[] card = new String[54];
    int intdext = 0;
    for (int i = 0; i < suit.length; i++) {
        for (int j = 0; j < point.length; j++) {
            card[intdext] = suit[i] + point[j];
            intdext++;
        }
    }
    card[52] = "小王";
    card[53] = "大王";
    return card;
}
//将需要抽取的牌新建一个数组,利用下标进行赋值
static String[] getCards(String[] card, int x, int y, int z) {
    String[] cards = new String[3];
    cards[0]=card[x-1];
    cards[1]=card[y-1];
    cards[2]=card[z-1];
    return cards;
}

虽然都可以实现题目要求,但Java本身就是为了方便快捷的实现功能而存在,若脱离了实际,且没有较好的利用Java中的规则,则不能达到一个程序该有的优质的逻辑运算能力。
较之以往的学习工作经验,以结果导向为主的思维已经适合Java的环境,Java告诉我,脱离了完美的过程,就不可能有完美的结果。



0 个回复

您需要登录后才可以回帖 登录 | 加入黑马