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); } }