对象的学习跟斗地主发牌

这边选取之前的选美,讲美女做成一个对象

public class BL {
    private int height;
    private int wight;

    public int getHeight() {
        return height;
    }

    public void setHeight(int height) {
        this.height = height;
    }

    public int getWight() {
        return wight;
    }

    public void setWight(int wight) {
        this.wight = wight;
    }
}

需要改的三段代码 第一段返回List 返回一个对象列表 ,这边循环3次 bl在for循环中 循环了3次所以返回3个对象列表 用列表对象 而不是单单用对象。

    public List<BL> getHW() {

        List<BL> bll=new ArrayList<>();
        for (int i=0;i<3;i++){
            BL bl=new BL();
            System.out.println("输入身高 体重");
            int h=scanner.nextInt();
            int w=scanner.nextInt();
            bl.setHeight(h);
            bl.setWight(w);
            bll.add(bl);
        }
        return bll;
    }

第二段 参数为列表对象 主要看懂for(BL b2:bill)和sumW += b2.getWight(); bill有3个列表对象 他会一一拿走。

public Map<String, Integer> getSumHW(List<BL> bll) {
        int sumH = 0;
        int sumW = 0;
        for (BL bl :bll) {
            sumH += bl.getHeight();
        }
        for (BL b2:bll) {
            sumW += b2.getWight();
        }
        Map map = new HashMap();
        map.put("sumh", sumH);
        map.put("sumw", sumW);
        return map;
    }

第三段 主函数

public static void main(String[] args) {
        Listxuan xuan = new Listxuan();
        List<BL> map= xuan.getHW();
        Map<String, Integer> sumHW = xuan.getSumHW(map);
        Map<String, Integer> avgHW = xuan.getAvgHW(sumHW);
        System.out.println("总身高:"+sumHW.get("sumh"));
        System.out.println("总体重:"+sumHW.get("sumw"));
        System.out.println("均身高:"+avgHW.get("avgh"));
        System.out.println("均体重:"+avgHW.get("avgw"));
        xuan.panDuan(avgHW);

斗地主的发牌代码
1.无排序 数组法

public static String[] newPoker(){
        String[] color={"♥","♠","♣","♦"};
        String[] numbers={"3","4","5","6","7","8","9","10","j","q","k","A","2"};
        String[] kings={"b","s"};
        String[] pokers=new String[54];
        int index=0;
        for (int i=0;i<color.length;i++){
            for (int j=0;j<numbers.length;j++){
                pokers[index++]=color[i]+numbers[j];
            }
        }
        System.arraycopy(kings,0,pokers,pokers.length-2,2);
        return pokers;
    }
    public static String[] swap(String[] a,int i,int j){
        String temp=a[i];
        a[i]=a[j];
        a[j]=temp;
        return a;
    }
    public static String[] shuffle(String[] a){
        Random rand=new Random();
        for (int i=a.length;i>0;i--){
            int b =rand.nextInt(i);
            swap(a,i-1,b);
        }
        return a;
    }
    public static void faPai(String[] a){
        int b=(a.length-3)/3;
        String a1[]=new String[b];
        String a2[]=new String[b];
        String a3[]=new String[b];
        String a4[]=new String[3];
        System.arraycopy(a,0,a1,0,b);
        System.arraycopy(a,b,a2,0,b);
        System.arraycopy(a,2*b,a3,0,b);
        System.arraycopy(a,a.length-3,a4,0,3);
        System.out.println(Arrays.toString(a1));
        System.out.println(Arrays.toString(a2));
        System.out.println(Arrays.toString(a3));
        System.out.println(Arrays.toString(a4));
    }
    public static void main(String[] args) {
        String [] poker=Kabuqinuo.newPoker();
        String [] poker2=Kabuqinuo.shuffle(poker);
        Kabuqinuo.faPai(poker2);


    }

2.有排序集合法

package com.zhongruan;

import java.util.*;

public class Doudizhu {
//看牌
    public static void lookPai(Map<Integer,String> map, List<Integer> a1){
        for (Integer a:a1){
            String one =map.get(a);
            System.out.printf(one+" ");
        }
        System.out.println();
    }
    public static void main(String[] args) {
        List<Integer> poker=new ArrayList<>();
        Map<Integer,String> map=new HashMap<>();
        int index=0;
        String[] nums={"3","4","5","6","7","8","9","10","j","q","k","A","2"};//按顺序写 影响结果
        String[] colors={"♠","♥","♣","♦"};
        for (String num:nums){  //按顺序影响结果
            for (String color:colors){
                map.put(index,color+num);
                poker.add(index++);
            }
        }
        map.put(index,"小王");
        poker.add(index++);
        map.put(index,"大王");
        poker.add(index++);

        List<Integer> a1=new ArrayList<>();
        List<Integer> a2=new ArrayList<>();
        List<Integer> a3=new ArrayList<>();
        List<Integer> dipai=new ArrayList<>();
        Random random=new Random();
        Collections.shuffle(poker);
        for (int i=0;i<poker.size();i++){
            if (i>=51){
                dipai.add(poker.get(i));
            }
            else if (i%3==0){
                a1.add(poker.get(i));
            }
            else if (i%3==1){
                a2.add(poker.get(i));
            }
            else {
                a3.add(poker.get(i));
            }
        }
        Collections.sort(a1);
        Collections.sort(a2);
        Collections.sort(a3);
        Collections.sort(dipai);
        Doudizhu.lookPai(map,a1);
        Doudizhu.lookPai(map,a2);
        Doudizhu.lookPai(map,a3);
        Doudizhu.lookPai(map,dipai);
    }
}

如果有更好的方法欢迎发出来 我只是个小白。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值