Java作业(3.23)

1、编程题

设计一个用户类User,类中的变量有用户名、密码和记录用户数量的变量,定义3个构造方法:无参的、为用户名赋值的、为用户名和密码赋值的,还有获取和设置密码的方法和返回类信息的方法。

 

//设计一个用户类User,类中的变量有用户名、密码和记录
//用户数量的变量,定义3个构造方法:无参的、为用户名赋值的、为用户名和密码赋值的,
//还有获取和设置密码的方法和返回类信息的方法。

public class User {
    private String name;
    private String password;
    private static int count;//count用于统计个数必须用static声明或全局属性
    public User() {
        count++;
    }
    public User(String name) {
        this.name=name;
        count++;
    }
    public User(String name,String password) {
        this.name=name;
        this.password=password;
        count++;
    }
    public String getName() {
        return name;
    }
    public void setname() {
        this.name=name;
    }
    public String getPassword(String name){
        return password;
    }
    public void setPassword() {
        this.password=password;
    }
    public void print(){
        System.out.println("用户名:"+name+"\t"+"密码:"+password);
    }
    public void count() {
        System.out.println("用户个数"+(count-1));
    }

}
public class Test02 {
public static void main(String[] args) {
    User user1=new User("李四","123456");
    user1.print();
    User user2=new User("张三","456789");
    user2.print();
    User user3=new User("刘苓启","666777");
    user3.print();
    new User().count();
}
}

 

2、编程题

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

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

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

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

public class Poker {
    public class Card {
        private String suite;// 花色
        private int face;// 点数

        public Card(String suite, int face) {
            this.suite = suite;
            this.face = face;
        }

        public String toString() {
            String faceStr = "";
            switch (face) {
            case 1:
                faceStr = "A";
                break;
            case 11:
                faceStr = "J";
                break;
            case 12:
                faceStr = "Q";
                break;
            case 13:
                faceStr = "K";
                break;
            default:
                faceStr = String.valueOf(face);
            }
            return suite + faceStr;
        }

    }

    // Poker类 成员
    private static String[] suites = { "黑桃", "红桃", "梅花", "梅花", "方块" };
    private static int[] faces = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 };
    private Card[] cards;

    // 构造器
    public Poker() {
        // 构造52个Card对象 存放在cards数组中
        cards = new Card[52];
        for (int i = 0; i < suites.length; i++) {
            for (int j = 0; j < faces.length; j++) {
                cards[i * 13 + j] = new Card(suites[i], faces[j]);
            }
        }
    }

    // 洗牌 (随机乱序)
    public void shuffle() {
        int len = cards.length;
        for (int i = 0; i < len; i++) {
            int index = (int) (Math.random() * len);
            Card temp = cards[index];
            cards[index] = cards[i];
            cards[i] = temp;
        }
    }

    public Card getCard(int index) {
        return cards[index];
    }

    public class Test {
        public static void main(String[] args) {
            Poker poker = new Poker();
            poker.shuffle();// 洗牌
            Poker.Card c1 = poker.getCard(0);// 发第一张牌
            // 对于非静态内部类Card
            // 只有通过其外部类Poker对象才能创建Card对象
            Poker.Card c2 = poker.new Card("红心", 1);
            System.out.println(c1);// 洗牌后的第一张
            System.out.println(c2);
        }
    }

}

 

posted @ 2022-03-26 15:56  特工607  阅读(134)  评论(0)    收藏  举报