Java三星题之剪刀石头布(三局两胜)
来源:互联网 发布:淘宝图片数据包 编辑:程序博客网 时间:2024/06/09 13:54
原题:
Write a program that plays the popular scissor-rock-papergame(A scissor can cut a paper.a rock can knock a scissor,and a paper can wrapa rock ).The program randomly generates a number 0,1 or 2 representingscissor,rock,and paper.The program prompts the user to enter a number 0,1 or 2and displays a message indicating whether the user or the computerwins,loses,or draws.Revise the program to let user continuously play untileither the user or the computer wins more than two times.
题目来源:
题目选自《JAVA程序语言设计》 P108-3.17*+ P153-4.34***
解题思路:
建立一个循环,循环内首先通过Math.random()*生成一个0~2的随机数赋值给computer(即计算机),从输入端输入一个0-2的数字(输出不符合规则则重新输入)赋值给user(即玩家),通过switch语句数字对应输出计算机和用户所要出的手势,随后用if-else语句进行比较判断,如果user赢则提示user获胜且玩家获胜数num1加一,computer赢则提示computer获胜且计算机获胜数num2加一,平局则提示平局,当有一方赢了两场询问时否继续游戏,是则重新开始;否则跳出循环,输出游戏结束,最后通过三目运算符判断并输出谁是赢家。
代码如下:
import java.util.*;import java.util.Scanner; public class Main{ public static void main(String[] args) { int num1=0,num2=0; while (true) { int computer= (int) (Math.random()*3); //产生一个0~2的随机数并赋给计算机 Scanner input=new Scanner(System.in); System.out.print("scissor (0), rock (1), paper (2):"); int user=input.nextInt(); //用户端输入 if (user> 2 || user < 0) //如果用户输入数不在0~2间,则会要求重新输入本次数据 continue; System.out.print("The Computer is "); switch(computer) //识别计算机的数并对应输出scissor、rock或者paper { case 0: System.out.print("scissor. ");break; case 1: System.out.print("rock.");break; case 2: System.out.print("paper.");break; } switch(user) //识别用户输入的数并对应输出scissor、rock或者paper { case 0: System.out.print(" You are scissor.");break; case 1: System.out.print(" You are rock. ");break; case 2: System.out.print(" You are paper. ");break; } //比较computer和user的数据. if (computer == user) //平局 System.out.println("too. It is a draw"); else if (user== ++ computer ||(computer == 2 && user ==0)) //user比computer大1或者computer为2时user为0 { System.out.println("You won"); num2++; } else { System.out.println("computer won"); num1++; } if ((num1>=2)||(num2>=2)) //如果计算机或者用户赢了两局,则跳出 { System.out.print("Do you want to continue?(Enter Y to continue,EnterN to exit):"); //询问是否要继续,输入Y继续,输入N退出 StringChoose = input.next(); if (Choose.equals("Y")) //输入Y,计数器清零重新开始 { num1=0; num2=0; continue; } else if (Choose.equals("N")) //输入N,退出游戏 { break; } } } System.out.println("Game over"); //输入游戏结束 System.out.println((num1>num2)?"computer win":"you win"); //输出赢家 }}
运行结果:
/*output:scissor (0), rock (1), paper(2):2The Computer is rock. You arepaper. You wonscissor (0), rock (1), paper(2):1The Computer is scissor. You are rock. You wonDo you want tocontinue?(Enter Y to continue,Enter N to exit):Yscissor (0), rock (1), paper(2):1The Computer is rock. You arerock. too. It is a drawscissor (0), rock (1), paper(2):2The Computer is scissor. You are paper. computer wonscissor (0), rock (1), paper(2):1The Computer is rock. You arepaper. You wonscissor (0), rock (1), paper(2):1The Computer is scissor. You are rock. You wonDo you want tocontinue?(Enter Y to continue,Enter N to exit):NGame overyou win*///~
- Java三星题之剪刀石头布(三局两胜)
- Java之石头剪刀布
- (scissor , rock , paper) 三星题 剪刀石头布
- Java五颗星之剪刀石头布
- c#之剪刀石头布
- c#之剪刀石头布
- c#之剪刀石头布
- 猜拳(石头剪刀布)
- 程序设计之七:“石头剪刀布”游戏(C#)
- silverlight之案例小游戏剪刀石头布(12)
- 从零开始学java(小游戏 石头剪刀布)
- [C++]石头剪刀布之---最终幻想版
- 随机数之石头剪刀布游戏
- enum实战之石头剪刀布
- day04_经典小游戏之“石头、剪刀、布”
- 编程娱乐之石头剪刀布
- java编写剪刀石头布游戏
- Java石头剪刀布小游戏代码
- 『2017年高考』
- ACM,动态规划,可怜的绵羊问题
- 默然日记20151006
- 带最小值操作的栈
- 【bzoj4143】[AMPPZ2014]The Lawyer
- Java三星题之剪刀石头布(三局两胜)
- 开发中使用过的设计模式
- 设计 4 个线程, 其中两个线程每次对 j 增加 1 , 另外两个线程对 j 每次减少 1 。 写出程序
- 为何加入:private static final long serialVersionUID
- FZU 2198 快来快来数一数(矩阵快速幂)
- 【BZOJ1630】【Usaco2008 Nov】【Time Management 时间管理】【贪心】
- 定时器+反射变换 --->模拟一个音乐播放器的音乐专辑旋转
- 【Python】Learn Python the hard way, ex0 学习使用Terminal
- Linux join命令