Java三星题之剪刀石头布(三局两胜)

原题:

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):2
The Computer is rock. You arepaper. You won
scissor (0), rock (1), paper(2):1
The Computer is scissor.  You are rock. You won
Do you want tocontinue?(Enter Y to continue,Enter N to exit):Y
scissor (0), rock (1), paper(2):1
The Computer is rock. You arerock. too. It is a draw
scissor (0), rock (1), paper(2):2
The Computer is scissor.  You are paper. computer won
scissor (0), rock (1), paper(2):1
The Computer is rock. You arepaper. You won
scissor (0), rock (1), paper(2):1
The Computer is scissor.  You are rock. You won
Do you want tocontinue?(Enter Y to continue,Enter N to exit):N
Game over
you win
*///~


 


  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值