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

代码:

package com.sdbi.liyan;

class User {
    /*设计一个用户类User,类中的变量有用户名、密码和记录用户数量的变量,
     * 定义3个构造方法:无参的、为用户名赋值的、为用户名和密码赋值的,
     * 还有获取和设置密码的方法和返回类信息的方法。
     */
    private String name;
    private String password;
    private static int count;//记录用户数量
    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(String name) {
    this.name=name;
    }
    public String getPassword() {
        return password;
}
    public void setPassword(String password) {
    this.password=password;
    }
    public void speak() {
        System.out.print("用户名:"+name);
        System.out.println(",密码:"+password);
    }
    public void count() {
        System.out.println("用户数量:"+count);
    }
    }
package com.sdbi.liyan;

public class UserTest {
    public static void main(String[] args) {
    User p=new User();
    p.speak();
    User p1=new User("liyan");
    p1.speak();
    User p2=new User("liyan","1234");
    p2.speak();
    p2.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()进行发牌。

代码:

package com.sdbi.liyan;
/*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()进行发牌。*/
//外部类(一副牌)
 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;
        }
    }
    // 定义私有成员花色数组、点数数组以及一副牌的数组属性
    private static String[] suites={"黑桃","红心","梅花","方块"};
    private static int[] faces={1,2,3,4,5,6,7,8,9,10,11,12,13};
    private static Card[] cards;
    // 创建一个外部类的构造方法,用于实现初始化一副牌的数组
    public Poker() {
        cards=new Card[52];
        // 外for循环,用于遍历出所有的花色
        for (int i = 0; i < suites.length; i++) {
              // 内for循环,用于遍历出所有的点数
            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];
        }
}
package com.sdbi.liyan;

public class PokerTest {
    public static void main(String[] args) {
        Poker poker=new Poker();
        poker.shuffle();
        Poker.Card c1=poker.getCard(0);
        Poker.Card c2=poker.new Card("梅花",11);
        System.out.println(c1);
        System.out.println(c2);
        }
}