作业

设计一副牌Poker的外部类和一张牌Card的内部类。

(1)Poker类中定义私有成员花色数组、点数数组以及一副牌的数组属性,提供构造方法(创建并初始化一副牌的数组)、随机洗牌方法shuffle(Math.random()获取[0,1)的随机数;获取[n,m)的随机数公式为Math.random()*(m-n)+n)和发牌方法deal。

(2)Card类中定义花色和点数属性,提供打印信息方法。

(3)定义测试类并在main()方法中创建一副牌Poker对象,并调用shufle()进行洗牌,调用deal()进行发牌

package ruanjian;

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

class Card {
}



class Card1 extends Card{
    private String num;
    private String type;

    public String toString() {
        return type+num+" ";
    }
    public Card1(String num, String type) {
        super();
        this.num = num;
        this.type = type;
    }
}


class Card2 extends Card{
    private String name;

    public String toString() {
        return name+" ";
    }
    public Card2(String name) {
        super();
        this.name = name;
    }

}


public class Main1 {
    public static void main(String[] args) {
        // 创建一个集合来装牌;
        List<Card> b = new ArrayList<Card>();
        // 创建一个数组来装牌的花色;
        String[] c = { "红桃", "黑桃", "方块", "梅花" };
        // 分别遍历牌中带有数字的牌(2,3,4,5,6,7,8,9,10)和牌的花色;
        for (int i = 2; i < 11; i++) {
            for (int j = 0; j < c.length; j++) {
                // 取出花色
                String c1 = c[j];
                // 创建一张牌(对象),将数字和花色连接组成牌;
                Card d = new Card1(i + "", c1);
                // 将牌添加到集合中
                b.add(d);
            }
        }
         for (int i = 0; i < c.length; i++) {
         String t = c[i];
         Card type = new Card1("A", t);
         b.add(type);
        }
        // 创建一个数组来装(A,J,Q,K)的牌
        String[] num = { "A", "J", "Q", "K" };
        // 分别遍历(A,J,Q,K)数组和花色数组
        for (int i = 0; i < num.length; i++) {
            for (int j = 0; j < c.length; j++) {
                // 创建一张牌(对象),将(A,J,Q,K)和花色连接组成牌;
                Card n = new Card1(num[i], c[j]);
                // 将牌添加到集合中
                b.add(n);
            }
        }
        // 将“大王”,“小王”,添加到集合
        b.add(new Card2("大王"));
        b.add(new Card2("小王"));
        // 将牌的顺序打乱(洗牌)
        Collections.shuffle(b);
        // 创建三个集合来分牌(发牌)
        List<Card> a1 = new ArrayList<Card>();
        List<Card> b1 = new ArrayList<Card>();
        List<Card> c1 = new ArrayList<Card>();
        // 遍历装牌的集合,分别发给三个集合;
        for (int i = 0; i < b.size() - 3; i++) {
            if (i % 3 == 0) {
                a1.add(b.get(i));
            }
            if (i % 3 == 1) {
                b1.add(b.get(i));
            }
            if (i % 3 == 2) {
                c1.add(b.get(i));
            }
        }
        // 分别打印出三个集合里的元素
        System.out.println("林yi:" + a1);
        System.out.println("周驰:" + b1);
        System.out.println(" 阿达:" + c1);
        // 遍历剩下的三张底牌,并打印出底牌。
        for (int i = b.size() - 3; i < b.size(); i++) {
            System.out.print(b.get(i) + " ");
        }
    }
}

 

 

 

package ruanjian;
//设计一个用户类User,类中的变量有用户名、密码和记录用户数量的变量,定义3个构造方法:
// 无参的、为用户名赋值的、为用户名和密码赋值的,还有获取和设置密码的方法和返回类信息的方法。
public class DUY {
    public static void main(String args[]) {
        Userd user1 = new Userd();
        user1.name = "李华";
        user1.Password = 4785691;
        user1.inf();
        Userd user2 = new Userd("张子健" );
        user2.Password = 47895623;
        user2.inf();
        Userd user3 = new Userd("铁山靠",445645656);
        user3.inf();
        new Userd().dd();

    }
}
class Userd {
    public String name; //定义String类型的name(用户)变量
    public int Password; //定义String类型的Password(密码)变量
    private static int number;  //统计用户数量

    public Userd() {//无参赋初值
        number++;
    }
    public Userd(String name){ //赋值用户名的
        this.name = name;


    }


    public Userd(String name, int Password) {
        number++;
        this.name = name;
        this.Password = Password;
    }


    public void inf() {
        System.out.println("用户名:" + name +"\t"+ "  密码:" + Password );
    }
    public void dd(){
        System.out.println("用户个数为" + number);
    }
}

 

posted @ 2022-03-26 13:18  逃课的猫  阅读(168)  评论(0)    收藏  举报