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*///~


 


1 0
原创粉丝点击