扑克牌和杨辉三角(ArrayList的使用)

扑克牌和杨辉三角(ArrayList的使用)

一、扑克牌(新牌、洗牌、分牌)

代码如下,注释比较清晰:

import java.util.ArrayList;
import java.util.List;

public class Card {
    public String rank;//扑克牌面值
    public String suit;//扑克牌花色

    //重写打印方法
    public String toString(){
        return "("+rank+","+suit+")";
    }
}

import java.util.ArrayList;
import java.util.List;
import java.util.Random;

public class CardDemo {
    public static final String[] Suits={"♥","♣","♦","♠"};
    //方法一;新扑克牌
    public static List<Card> buyCard(){
        List<Card> cards=new ArrayList<>(52);
        String group[]={"A","2","3","4","5","6","7","8","9","10","J","Q","K"};
        for(int i=0;i<4;i++){
            for(int j=0;j<group.length;j++){
                String suit=Suits[i];
                String rank=group[j];
                Card card=new Card();
                card.rank=rank;
                card.suit=suit;
                cards.add(card);
            }
        }
        return cards;
    }
    //方法二:交换牌
    public static void swap(List<Card> cards,int i,int a){
        Card t=cards.get(i);
        cards.set(i,cards.get(a));
        cards.set(a,t);
    }
    //方法三:洗牌(调用方法二)
    public static void shuffle(List<Card> cards){
        Random random=new Random();
        for(int i=cards.size()-1;i>0;i--){
            int a=random.nextInt(i);
            swap(cards,i,a);
        }
    }

    public static void main(String[] args) {
        List<Card> cards=buyCard();
        System.out.println("崭新的扑克牌:");
        System.out.println(cards);;
        shuffle(cards);
        System.out.println("洗过之后的扑克牌为:");
        System.out.println(cards);

        //游戏规则:三个人轮流抓五张牌。
        List<List<Card>> hands=new ArrayList<>();//二维数组
        hands.add(new ArrayList<>());
        hands.add(new ArrayList<>());
        hands.add(new ArrayList<>());
        for(int i=0;i<5;i++){
            for(int j=0;j<3;j++){
                hands.get(j).add(cards.remove(0));
            }
        }
        System.out.println("剩余的扑克牌:");
        System.out.println(cards);
        System.out.println("第一个人手中的牌:");
        System.out.println(hands.get(0));
        System.out.println("第二个人手中的牌:");
        System.out.println(hands.get(1));
        System.out.println("第三个人手中的牌:");
        System.out.println(hands.get(2));
    }
}

运行截图:
在这里插入图片描述

二、杨辉三角

代码如下,注释比较清晰:

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
//杨辉三角
public class YangHuiTriangle {
    public static void main(String[] args) {
        System.out.println("Please enter the numRows");//请输入展示的行号
        Scanner sc=new Scanner(System.in);
        int numRows=sc.nextInt();
        List<List<Integer>> list=new ArrayList<>();//等同于二维数组(动态数组,内部元素为动态数组)

        //外层循环为设置每一行的内容
        for(int i=0;i<numRows;i++){
            //杨辉三角第i行就有i个元素,因为i初始值为0,所以ArrayList大小定义为i+1;
            List<Integer> rowsdata=new ArrayList<>(i+1);
            //设置当前行每一列的内容
            for(int j=0;j<=i;j++){
                //每一行的第一个元素和最后一个元素均为1
                if(0==j||i==j){
                    rowsdata.add(1);
                }else{
                    //将杨辉三角左对齐,发现中间的元素是由上一行的当前列元素和上一元素相加得来
                    //从List中得来
                    rowsdata.add(list.get(i-1).get(j)+list.get(i-1).get(j-1));
                }
            }
            list.add(rowsdata);
        }
        System.out.println(list);
    }
}

在这里插入图片描述
作者:Luka.lh

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值