1、编程题
设计一个用户类User,类中的变量有用户名、密码和记录用户数量的变量,
定义3个构造方法:无参的、为用户名赋值的、为用户名和密码赋值的,还有获取和设置密码的方法和返回类信息的方法。
代码部分:
//定义一个User类 public class User { // 1、编程题 // 设计一个用户类User,类中的变量有用户名、密码和记录用户数量的变量, // 定义3个构造方法:无参的、为用户名赋值的、为用户名和密码赋值的,还有获取和设置密码的方法和返回类信息的方法。 // 成员变量: String user;// 用户名 String cipher;// 密码 int quantity;// 记录用户数量 // 构造方法: // (1)无参构造方法 public User() { } // (2)为用户名赋值的构造方法 public User(String user) { this.user = user; } // (3)为用户名和密码赋值的构造方法 public User(String user, String cipher) { this.user = user; this.cipher = cipher; } // 获取密码的方法 public String getCipher() { return cipher; } // 设置密码的方法 public void setCipher(String cipher) { this.cipher = cipher; } // 返回类信息的方法 public void show() { System.out.println("用户名为:" + user + ",密码为:" + cipher + ",当前的用户数量为:" + quantity); } }
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()进行发牌。
(1)代码部分:
package temp; import java.util.Arrays; //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()进行发牌。 //一副牌Poker的外部类 public class Poker { // 一张牌Card的内部类 public class Card { private String suite;// 定义牌的花色 private String face;// 定义牌的点数 // 定义内部类的满参构造方法 public Card(String suite, String face) { this.suite = suite; this.face = face; } // 定义toString()方法,返回扑克牌的花色和点数组合的字符串 public String toString() { return suite + face; } } // 定义私有成员花色数组、点数数组以及一副牌的数组属性 private String[] suites = { "黑桃", "红心", "梅花", "方块" }; private String[] faces = { "A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K" }; // 该牌的数组属性定义为Card类型,意为可以用来储存Card数据类型的变量,即为Card内部类创建出的对象 // 此处定义的数组属性为静态成员变量,因为后面用到的Arrays类的toString方法为静态方法,需要传入静态的成员变量作为参数 private static Card[] cards; // 创建一个外部类的构造方法,用于实现初始化一副牌的数组 public Poker() { // 定义cards 数组长度为52,用于存储52个Card内部类创建出的对象,每个对象代表一张牌 cards = new Card[52]; // 外for循环,用于遍历出所有的花色 for (int i = 0; i < suites.length; i++) { // 内for循环,用于遍历出所有的点数 for (int j = 0; j < faces.length; j++) { // 外层循环遍历花色,一共有四种,取值为0到3,内层循环遍历点数,每个花色对应的点数有13种,取值为0到12; // 外层循环每执行一次,代表选择了一种花色,内层循环需要完全执行,将13个点数与之(花色)结合。 // i*13+j为数组的索引位置,需要将52个对象依次储存进去,当i为0时,代表一种花色,存储的索引为0到12; // 当i为1时,代表另一种花色,存储的索引位置需要从13开始,当i为2时,存储的索引位置需要从26开始,依次累加; // 所以索引位置为i*13+j。 cards[i * 13 + j] = new Card(suites[i], faces[j]); // 将这些对象存储在牌的数组属性里,这样便实现了初始化一副牌的数组 } } } // 构造随机洗牌的方法shuffle public void shuffle() { for (int i = 0; i < cards.length; i++) { // random()方法为Math类的静态方法,可以直接用Math.random()的形式去调用 // 功能为获取[0,1)范围内数据类型为double的随机数 // 因为有double类型的随机数参与运算,故需要添加(int)将其强制转换为int类型的数据 int num = (int) (Math.random() * cards.length); Card temp = cards[num]; cards[num] = cards[i]; cards[i] = temp; } } // 构造发牌的方法deal public void deal(Card[] cards) { // 此处调用了Arrays类的toString方法,可以将数组中存储的内容以字符串的表示形式出来; // 此方法属于静态方法,可以直接用(类名)Arrays.toString()的形式来调用, // 需要传入静态的外部类成员变量作为参数,故前面定义的Card[] cards为静态成员变量 System.out.println(Arrays.toString(cards)); } public static void main(String[] args) { // 构建一个外部类对象,在构造方法的内部初始化了一副牌的数组 Poker poker = new Poker(); System.out.println("洗牌前:"); // 调用deal成员方法发牌 poker.deal(cards); // 调用shuffle成员方法进行洗牌 poker.shuffle(); System.out.println("洗牌后:"); // 洗牌后,再次调用deal成员方法发牌 poker.deal(cards); } }
(2)效果截图:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?