java猜拳程序_Java基础之:猜拳小程序

这是一个Java编写的猜拳游戏程序,包含一个人物类Person,能够进行多次猜拳,并记录输赢次数。玩家与电脑通过输入数字进行猜拳,电脑出拳由随机数决定。程序使用do...while循环实现无限次猜拳,直到玩家选择退出。结果存储在一个二维数组中,最后输出玩家的胜、负、平局次数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/**

有个人 小范 设计他的成员变量. 成员方法, 可以电脑猜拳. 电脑每次都会随机生成 0, 1, 2

0 表示 石头 1 表示剪刀 2 表示 布

并要可以显示 小范 的输赢次数(清单), 假定 玩三次.

思路:实现一次猜拳 → 实现无限循环次猜拳(输入3退出) → 使用数组保存每次猜拳结果

1.使用随机数生成系统的出拳,控制台输入Tom的出拳

2.比较参数 0 > 1 , 1 > 2 , 2 > 0 .输出结果

3.使用do...while 循环 实现无限次猜拳

4. 使用二维数组 arr[n][3] 保存猜拳结果 , n为猜拳次数,arr[n][0] 为系统出拳

arr[n][1] 为 Tom 出拳 ,arr[n][2] 为 猜拳结果 ,动态更新arr。

5. 最后显示出一共赢了多少次,输了多少次,平局多少次

*/

import java.util.Scanner;

public class HomeWork {

public static void main(String[] args) {

Scanner input = new Scanner(System.in);

System.out.println("请输入你的名字:");

String name = input.next();

Person p = new Person(name);

p.mora(name);

}

}

class Person

{

String name;

int out;//出拳参数

Scanner input = new Scanner(System.in);

public Person(){}

public Person(String name){

this.name = name;

}

public void mora(String name){ //猜拳方法,name用于最后打印输出 输赢结果

int count = 0; // 用来标志 第几次猜拳

int[][] arr = new int[1][3];//使用二维数组 arr[n][3] 保存猜拳结果

do{

int systemIn = (int)(Math.random()*2 + 1);//生成 0-2的随机数

//System.out.println(systemIn);

int res = 0; // 保存猜拳结果,-1为输 0为平局 1为赢

System.out.println("请出拳(0 表示石头,1 表示剪刀,2 表示布 ,3退出):");

out = input.nextInt();

//保护机制

while(out<0 || out>4){

System.out.println("输入错误!请重新输入(0 表示石头,1 表示剪刀,2 表示布,3退出):");

out = input.nextInt();

}

if(out == 3){ //退出

break;

}

switch(systemIn){//判断输赢

case 0://电脑出石头

if(out == 0){

res = 0;

}else if(out == 1){

res = -1;

}else{

res = 1;

}

break;

case 1://电脑出剪刀

if(out == 0){

res = 1;

}else if(out == 1){

res = 0;

}else{

res = -1;

}

break;

case 2://电脑出布

if(out == 0){

res = -1;

}else if(out == 1){

res = 1;

}else{

res = 0;

}

break;

}

switch(res){//输出结果

case -1:

System.out.println("你输了!");

break;

case 0:

System.out.println("平局!");

break;

case 1:

System.out.println("你赢了!");

break;

}

//保存结果

arr[count][0] = systemIn;//arr[n][0] 为系统出拳

arr[count][1] = out;//arr[n][1] 为 Tom 出拳

arr[count][2] = res;//arr[n][2] 为 猜拳结果

count++;//改变count的值,准备进行下一次猜拳

//因为count是从0开始的,这里要先进行count++,再数组扩容,不然会出现数组下标越界异常。

int[][] temp = new int[count+1][3];//建立中间数组,进行数组扩容

for(int i =0;i

for(int j = 0;j

temp[i][j] = arr[i][j];

}

}

arr = temp;

}while(out != 3);

//退出循环后,输出打印进行过的对局结果。

//打印结果的同时,累加变量 winCount ,loseCount ,drawCount

int winCount = 0;//赢的次数

int loseCount = 0;//输的次数

int drawCount = 0;//平局次数

for(int k = 0;k

switch(arr[k][2]){//根据输赢进行判断

case -1:

System.out.printf("第%d次猜拳 系统出拳 %S ,你出拳 %S ,你输了!",(k+1),print(arr[k][0]),print(arr[k][1]));

loseCount++;

break;

case 0:

System.out.printf("第%d次猜拳 系统出拳 %S ,你出拳 %S ,平局!",(k+1),print(arr[k][0]),print(arr[k][1]));

drawCount++;

break;

case 1:

System.out.printf("第%d次猜拳 系统出拳 %S ,你出拳 %S ,你赢了!",(k+1),print(arr[k][0]),print(arr[k][1]));

winCount++;

break;

}

System.out.println();

}

System.out.printf("%S一共赢了%d次,输了%d次,平局%d次。\n",name,winCount,loseCount,drawCount);

}

public String print(int a){//用于输出石头 剪刀 布

String out = "";

if(a == 0){

out = "石头";

}else if(a == 1){

out = "剪刀";

}else{

out = "布";

}

return out;

}

}

6b90e64f27c75821e879eb7f9522e64e.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值