Java黑皮书课后题第5章:**5.34(游戏:石头、剪刀、布)编程练习题3.17给出玩石头-剪刀-布游戏的程序。修改这个程序,让用户可以连续玩这个游戏,直到用户或者计算机赢对手两次以上为止
5.34(游戏:石头、剪刀、布)编程练习题3.17给出玩石头-剪刀-布游戏的程序。修改这个程序,让用户可以连续玩这个游戏,直到用户或者计算机赢对手两次以上为止
- 题目
- 题目概述
- 编程练习题3.17
- 破题
- 运行示例
题目
题目概述
5.34(游戏:石头、剪刀、布)编程练习题3.17给出玩石头-剪刀-布游戏的程序。修改这个程序,让用户可以连续玩这个游戏,直到用户或者计算机赢对手两次以上为止
编程练习题3.17
点击这里快速跳转至3.17博文,或复制以下URL到浏览器:
https://blog.csdn.net/weixin_46356698/article/details/119810073
3.17详细代码:
import java.util.Scanner;public class Test3_17 {public static void main(String[] args) {// 电脑与人类产生石头剪刀布的代码int computer = (int)(Math.random()*3);Scanner input = new Scanner(System.in);System.out.println("rock(0), scissor(1), paper(2): ");int people = input.nextInt();// 判断人类输入是否合法if(people != 0 && people != 1 && people != 2){System.out.println("输入不合法");System.exit(1);}// 结果判断if(computer == 0 && people == 0)System.out.println("The computer is rock. You are rock too. It is a draw");if(computer == 0 && people == 1)System.out.println("The computer is rock. You are scissor. Computer won");if(computer == 0 && people == 2)System.out.println("The computer is rock. You are paper. You won");if(computer == 1 && people == 0)System.out.println("The computer is scissor. You are rock. You won");if(computer == 1 && people == 1)System.out.println("The computer is scissor. You are scissor too. It is a draw");if(computer == 1 && people == 2)System.out.println("The computer is scissor. You are paper. Computer won");if(computer == 2 && people == 0)System.out.println("The computer is paper. You are rock. Computer won");if(computer == 2 && people == 1)System.out.println("The computer is paper. You are scissor. You won");if(computer == 2 && people == 2)System.out.println("The computer is paper. You are paper too. It is a draw");}
}
破题
设置两个计数变量,分别计算用户、计算机胜利次数,当任意一个变量为3时,则结束游戏
所以在结果判断部分进行修改、整体增加循环控制语句即可
import java.util.Scanner;public class Test5_34 {public static void main(String[] args) {int computer_win = 0, people_win = 0;for (; ; ) {// 电脑与人类产生石头剪刀布的代码int computer = (int) (Math.random() * 3);Scanner input = new Scanner(System.in);System.out.println("rock(0), scissor(1), paper(2): ");int people = input.nextInt();// 判断人类输入是否合法if (people != 0 && people != 1 && people != 2) {System.out.println("输入不合法");}// 结果判断if (computer == 0 && people == 1)computer_win += 1;else if (computer == 0 && people == 2)people_win += 1;else if (computer == 1 && people == 0)people_win += 1;else if (computer == 1 && people == 2)computer_win += 1;else if (computer == 2 && people == 0)computer_win += 1;else if (computer == 2 && people == 1)people_win += 1;elseSystem.out.print("本局平手\t");// 输出当前比分并判断是否需要结束循环System.out.println("人类:计算机分数为:" + people_win + ":" + computer_win);if (computer_win == 3 || people_win == 3){String str = (computer_win == 3) ? "计算机胜" : "人类胜";System.out.println(str);return;}}}
}
运行示例
rock(0), scissor(1), paper(2):
1
人类:计算机分数为:1:0
rock(0), scissor(1), paper(2):
1
人类:计算机分数为:2:0
rock(0), scissor(1), paper(2):
1
人类:计算机分数为:2:1
rock(0), scissor(1), paper(2):
1
本局平手 人类:计算机分数为:2:1
rock(0), scissor(1), paper(2):
1
人类:计算机分数为:3:1
人类胜Process finished with exit code 0
Java黑皮书课后题第5章:**5.34(游戏:石头、剪刀、布)编程练习题3.17给出玩石头-剪刀-布游戏的程序。修改这个程序,让用户可以连续玩这个游戏,直到用户或者计算机赢对手两次以上为止相关推荐
- Java黑皮书课后题第10章:10.21(被5或6整除)找出能被5或6整除的大于Long.MAX_VALUE的前10个数字
Java黑皮书课后题第10章:10.21(被5或6整除)找出能被5或6整除的大于Long.MAX_VALUE的前10个数字 题目 代码 结果 题目 都在上面 代码 import java.math.B ...
- Java黑皮书课后题第3章:**3.27(几何:点是否在三角形内)假设一个平面上有一个直角三角形。编写程序,提示用户输入一个点的x坐标和y坐标,然后判断这个点是否在该三角形内
**3.27(几何:点是否在三角形内)假设一个平面上有一个直角三角形.编写程序,提示用户输入一个点的x坐标和y坐标,然后判断这个点是否在该三角形内 题目 题目描述 破题 运行示例 代码 题目 题目描述 ...
- Java黑皮书课后题第10章:*10.16(被2或3整除)找出所有被2或3整除的有50个十进制位数的前10个数字
10.16(被2或3整除)找出所有被2或3整除的有50个十进制位数的前10个数字 法一 破题 代码 运行结果 法二 破题 代码 运行结果 法一 破题 本题通过基本数据类型无解(求不出来,不是没有解) ...
- Java黑皮书课后题第10章:*10.10(Queue类)10.6节给出一个Stock类。设计一个名为Queue的类用于存储整数。像栈一样,队列保存元素。在栈中,元素后进先出。队列中元素先进先出
10.10(Queue类)10.6节给出一个Stock类,设计一个名为Queue的类用于存储整数 题目 程序 破题 代码 Test10.java Test10_Queue.java UML 题目 程序 ...
- Java黑皮书课后题第7章:**7.24(仿真:优惠券收集问题)优惠券收集问题是一个经典的统计问题。编写程序,模拟要得到四张不同花色的牌所需要的选取次数,然后显示选中的四张牌
**7.24(仿真:优惠券收集问题)优惠券收集问题是一个经典的统计问题.编写程序,模拟要得到四张不同花色的牌所需要的选取次数,然后显示选中的四张牌 题目 题目描述与运行示例 破题:花色与数字 代码 题 ...
- Java黑皮书课后题第9章:**9.12(几何:交点)假设两条线段相交。第一条线段的两个端点是(x1, y1)和(x2, y2),第二条线段的两个端点是(x3, y3)和(x4, y4)
Java黑皮书课后题第9章:**9.12(几何:交点)假设两条线段相交.第一条线段的两个端点是(x1, y1)和(x2, y2),第二条线段的两个端点是(x3, y3)和(x4, y4) 题目 破题 ...
- Java黑皮书课后题第9章:*9.11(代数:2*2的线性方程)为一个2*2的线性方程设计一个名为LinearEquation的类
Java黑皮书课后题第9章:*9.11(代数:2*2的线性方程)为一个2*2的线性方程设计一个名为LinearEquation的类 题目 破题 代码 Test10 Test11_LinearEquat ...
- Java黑皮书课后题第9章:*9.10(代数:二次方程式)为二次方程式设计一个名为QuadraticEquation的类
Java黑皮书课后题第9章:*9.10(代数:二次方程式)为二次方程式设计一个名为QuadraticEquation的类 题目 破题 代码 Test10 Test10_QuadraticEquatio ...
- Java黑皮书课后题第11章:11.2(Person Student Employee Faculty Staff类)设计一个名为Person的类及其两个名为Student和Employee的子类
Java黑皮书课后题第11章:11.2(Person Student Employee Faculty Staff类) 题目 缺陷 UML图 代码 Test02_MyDate.java:用于参考的My ...
最新文章
- FileChannel应用实例——本地文件读数据(假定文件已存在)
- python获取当前服务器ip_Python实现获取域名所用服务器的真实IP
- SQL Error: 957, SQLState: 42000 ORA-00957: duplicate column name
- 前端学习(1390):多人管理项目10服务器认证
- java期末试题c卷,JAVA程序设计期末考试试卷及参考答案
- Problem C: 01字串
- python字典进行大写转化_Python字典转换成小写?
- docker安装rabbitmq步骤
- linux 基本配置tab键和显示行号 和中文输入法
- 六行shell脚本实现Android手机自动刷抖音极速版
- 浏览器导航被劫持解决方法
- 文案馆头像壁纸小程序源码 带后台
- CSDN莫名其妙封号
- Autolayout - NSLayoutAnchor
- 计算机英语及教学法,计算机英语教学方法探析
- C# XML 与 String 互转
- 1199:全排列(dfs)
- Web Service 教程
- A-Level化学例题解析及练习(分子间作用力和沸点)
- Spring中的模板模式