1、编程题

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

package com.sdbi.suhang;

public class User {
// 编程题:设计一个用户类User,类中的变量有用户名、密码和记录用户数量的变量,
// 定义3个构造方法:无参的、为用户名赋值的、为用户名和密码赋值的,还有获取和设置密码的方法和返回类信息的方法。
private String Username;
// 定义一个私有化的字符串类型的对象Username(用户名)。 private String password;
// 定义一个私有化字符串类型的对象password(密码)。 private static int num = 0;
// 定义一个私有化静态的int类型的对象num,并且赋初始值为零。 {// 定义构造一个代码块。用来统计用户创建对象的数量
// 因为构造代码块是在创建对象的时候被调用,构造代码块在构造方法之前调用,也就是只要有对象实例化就可以执行。
num++;
System.out.println("第" + num + "对象"); } public User() {
// 无参的方法。 } public User(String Username) {
// 为用户名赋值的方法。
this.Username = Username;
} public User(String Username, String password) {
// 为用户名和密码赋值的方法。
this.Username = Username;
this.password = password; } public String getkey(String password) {
// 获取密码的方法。
return password;
// System.out.println(password); } public void setkey(String password) {
// 设置密码的方法。
this.password = password; } public String calss() {
// 返回类信息的方法。
return "类信息为:" + this.Username + "\n" + this.password; } public void say() {//打印信息的方法
System.out.println("用户名为:" + Username +"\n"+ "用户密码为:" + password); } }
package com.sdbi.suhang;

public class UserData {
public static void main(String[] args) {
User u1 = new User();
u1.say();// 调用不带有任何参数的无参数方法。 User u2 = new User("张三");
u2.say();// 调用带有用户名的方法。 User u3 = new User("哈哈哈", "123456");
u3.say();// 调用带有用户名和密码的方法。 } }

运行之后我们就可以看到

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.suhang;

import java.util.Arrays;
import java.util.Iterator; import javax.sql.rowset.CachedRowSet; public class Poker {
// 设计一副牌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 Card {
// 定义一个新的Card类。(内部类) private String Suite;// 定义一个私有化的字符串类型的花色变量。 private String Face;// 定义一个私有化的字符串类型的点数变量。 public Card(String Suite, String Face) {
// 定义一个公共的含有参数的Card方法。
this.Suite = Suite;
this.Face = Face; } public String toString() {
// 定义一个可以返回扑克牌花色和点数的方法。
return Suite + Face;
// 之后我们会用到这个方法用来进行发牌。 } } private static String[] Suites = { "", "", "", "" };// 定义一个私有化的花色的字符串数组 private static String[] facesa = { "" };// 定义一个私有化的空花色的字符串数组 private static String[] Suitess = { "", "" };// 定义一个新数组用来存储大小王 private static String[] Faces = { "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K", "A" };// 定义一个私有化的牌面的字符串数组 public static Card[] Cards;
// 定义一个公共的Card数组,名称叫Cards。 public void poker() {
// 定义一个扑克牌的构造方法。
Cards = new Card[54];// 创建一个Cards数组,并且规定Cards数组的长度为52. for (int i = 0; i < Suites.length; i++) {
// 定义一个外部for循环,用来排列扑克牌的花色。
for (int j = 0; j < Faces.length; j++) {
// 定义一个内部for循环,用来排列扑克牌的牌面点数。 // 定义一个新的变量,用来表示卡牌的序数。
Cards[i * 13 + j] = new Card(Suites[i], Faces[j]);
// 这里的打印功能是用来检验是否可以创建出所有的扑克牌 } } // 既然所有带花色的扑克牌都定义完了,那我们该定义大小王了。
Cards[52] = new Card(Suitess[0], facesa[0]);// 这就是我们定义的大小王,由于大小王没有点数区别,我们就把它们归类到花色里面
Cards[53] = new Card(Suitess[1], facesa[0]);
// 到这里,我们就完整的定义完了一副扑克牌了哦!!!
// 并且我们已将新的一副拍装到了原先定义好的Cards数列里面哦! } public void say() {
for (int i = 0; i < 54; i++) {
System.out.print(Cards[i]); }
System.out.println();
} public void shuffle() {// 我们这里就开始创建一个洗牌的方法
int q = Cards.length;// 首先我们创建一个int常量q,来记录我们需要循环的次数。
for (int i = 0; i < q; i++) {// 之后我们创建一个for循环,用来将每一个元素进行随机
int num = (int) (Math.random() * q);
// Math.random()的方法就是用java虚拟机随机创建一个介于0.0和1.0之间的double类型的伪随机数。
// 我们用这个伪随机数乘以我们数列的长度,这样就可以找到我们随机的一个位置,进行元素互换。
// 由于我们的伪随机数是double类型,乘以q后还是double类型,所以我们需要将这个数强制转换为int类型。
Card temp = Cards[num]; // 我们定义一个temp,用来存放随机出来的位置的元素。
Cards[num] = Cards[i];// 我们将随机出来的位置的元素替换为我们原始元素。
Cards[i] = temp;// 最后我们将我们存放的元素填充会原始元素的位置。
// 至此,我们经过n轮的循环,就可以达到我们想要的洗牌效果。 }
} public void deal(Card[] Cards) {// 最后,我们来创建一个发牌的方法,其实就是一个打印的方法。
System.out.println(Arrays.toString(Cards));
// 发牌的情况是不是就是打印一遍我们已经存放好的数组呢?对滴!!!
// 由于我们定义好的扑克牌是数组,所以为了打印出我们存放好的数组,我们就可以运用已经封装好的toString方法打印数组。
// 但是,toString方法虽然可以打印数组,但是打印的数组都是内存地址,这样可不行。
// 为了打印出我们需要的东西,我们就需要在前面加上Arrays.来修饰,这样就可以打印出我们想要的扑克牌了。 } public static void jeiqu() {// 一个截取数组前n个的方法。
Card arr[] = java.util.Arrays.copyOf(Cards, 18);//我们定义一个新的数组,用来存放截取的数组(此处设置截取前18个元素)
System.out.println(Arrays.toString(arr));//我们延续上面的方法,打印整个数组。 } public static String[] arr; public static void main(String[] args) {
Poker p = new Poker();
System.out.println("洗牌前:");
p.poker();
p.deal(p.Cards);
System.out.println("洗牌后");
p.shuffle();
p.deal(p.Cards);
p.jeiqu(); } }

附上运行结果:

最后我再附上源代码图:

Java编程作业的更多相关文章

  1. java数据结构和算法编程作业系列篇-数组

    /** * 编程作业 2.1 向highArray.java程序(清单2.3)的HighArray类添加一个名为getMax()的方法,它返回 数组中最大关键字的值,当数组为空时返回-1.向main( ...

  2. 1.java小作业-计算1到100的整合-指定输入多少行输出就打印多少行-打印24小时60分钟每一分钟-重载基础练习-面向java编程初学者

    可能有和我一样刚开始学习java的小伙伴们, 可以或多或少了解一点别的语言知识,我就是中途转过来的, 明白一点,关键不在语言本身····· 所以面对初学者来说,基础要学好, 下面列举几个没什么难度的小 ...

  3. Java 编程的动态性 第1 部分: 类和类装入--转载

    原文地址:http://www.ibm.com/developerworks/cn/java/j-dyn0429/ 本文是这个新系列文章的第一篇,该系列文章将讨论我称之为 Java 编程的动态性的一系 ...

  4. UI-12组结对编程作业总结

    UI-12组结对编程作业总结 源码Github地址 https://github.com/tilmto/TILMTO/tree/master/Arithmetic 作业摘要 本次结对编程作业分为以下两 ...

  5. 2017-2018-20172311 暑期编程作业:APP

    2017-2018-20172311 暑期编程作业:实现一个简单倒计时APP 写在前面:暑假的时候就单纯的想要设计一个倒计时软件,然后就通过查阅资料等学了一些,包括实现倒计时功能及显示:背景音乐的添加 ...

  6. <JAVA - 大作业(1)文本编辑器 >

    <JAVA - 大作业(1)文本编辑器 > 背景 JAVA上机大作业:qq / 代码评价系统 第一次上机主题是练习JAVA自带的GUI图形化编程 目的:实现一个跟window10记事本界面 ...

  7. 第一次编程作业(My Own Score)

    博客班级 https://edu.cnblogs.com/campus/fzzcxy/2018SE2 作业要求 https://edu.cnblogs.com/campus/fzzcxy/2018SE ...

  8. 【BUAA软工】结对编程作业

    项目 内容 课程:2020春季软件工程课程博客作业(罗杰,任健) 博客园班级链接 作业:BUAA软件工程结对编程项目作业 作业要求 课程目标 学习大规模软件开发的技巧与方法,锻炼开发能力 作业目标 完 ...

  9. 《Java编程思想》读书笔记(五)

    前言:本文是<Java编程思想>读书笔记系列的最后一章,本章的内容很多,需要细读慢慢去理解,文中的示例最好在自己电脑上多运行几次,相关示例完整代码放在码云上了,码云地址:https://g ...

随机推荐

  1. docker:compose实战

    1.用docker-compose拉起三个容器:nginx->ghost博客平台->mysql,拉起后可以直接访问ghost博客平台 2.目录结构: ghost: data docker- ...

  2. 攻防世界-MISC:ext3

    这是攻防世界新手练习区的第九题,题目如下: 点击下载附件1,通过题目描述可知这是一个Linux系统光盘,用010editor打开,搜索flag,发现存在flag.txt文件 将该文件解压,找到flag ...

  3. 做SaaS的程序员们,是时候关注企业架构了

    SaaS赛道是一个超大赛道,足够容纳上万家服务商,不太可能有哪个服务商能满足所有场景,大部分SaaS服务商在某个垂直领域,提供差异化的产品和服务.SaaS产品大部分都是面向B端客户,少部分面向C端客户 ...

  4. python爬取豆瓣电影Top250(附完整源代码)

    初学爬虫,学习一下三方库的使用以及简单静态网页的分析.就跟着视频写了一个爬取豆瓣Top250排行榜的爬虫. 网页分析 我个人感觉写爬虫最重要的就是分析网页,找到网页的规律,找到自己需要内容所在的地方, ...

  5. Spring Framework 远程命令执行漏洞(CVE-2022-22965)

    Spring Framework 远程命令执行漏洞 (CVE-2022-22965) 近日,Spring 官方 GitHub issue中提到了关于 Spring Core 的远程命令执行漏洞,该漏洞 ...

  6. 更换国内镜像源进行pip安装

    Linux中当我们需要安装某个模块时(比如tensorflow2.0.0),常见有三种方法: pip install tensorflow==2.0.0 pip install https://pyp ...

  7. 11┃音视频直播系统之 WebRTC 进行文本聊天并实时传输文件

    一.RTCDataChannel WebRTC 不但可以让你进行音视频通话,而且还可以用它传输普通的二进制数据,比如说可以利用它实现文本聊天.文件的传输等 WebRTC 的数据通道(RTCDataCh ...

  8. RealEvo-IDE安装

    双击"InstallWizard.exe"启动安装程序 点击"Install RealEvo-IDE"启动 RealEvo-IDE 安装程序 选择"下 ...

  9. v87.01 鸿蒙内核源码分析 (内核启动篇) | 从汇编到 main () | 百篇博客分析 OpenHarmony 源码

    本篇关键词:内核重定位.MMU.SVC栈.热启动.内核映射表 内核汇编相关篇为: v74.01 鸿蒙内核源码分析(编码方式) | 机器指令是如何编码的 v75.03 鸿蒙内核源码分析(汇编基础) | ...

  10. Redis 中的原子操作(1)-Redis 中命令的原子性

    Redis 如何应对并发访问 Redis 中处理并发的方案 原子性 Redis 的编程模型 Unix 中的 I/O 模型 thread-based architecture(基于线程的架构) even ...