/**

有个人 小范 设计他的成员变量. 成员方法, 可以电脑猜拳. 电脑每次都会随机生成 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;

}

}

java猜拳程序_Java基础之:猜拳小程序相关推荐

  1. 微信小程序零基础入门【小程序的下载、安装与首项目配置】

    目录 第一步.注册小程序开发账号 第二步.下载并安装微信小程序 第三步.首次创建小程序 第一步.注册小程序开发账号 (1)点击注册按钮 微信公众平台 点击该链接进入微信公众号平台,点击右上角注册按钮, ...

  2. java简单小程序_Java简易登录注册小程序

    这篇文章主要介绍了Java图形界面开发,简易登录注册小程序,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 登录注册小代码,将学过的一些小知识融合在一起进行了使用,加深印象.本例中如果有注释不详细的 ...

  3. java gui 日历_Java实现简单日历小程序 Java图形界面小日历开发

    今天给大家介绍一下如何用Java swing开发一款简单的小日历,下面我们来看代码: 首先创建一个CalendarBean类,用于基本的日期计算: package other1; import jav ...

  4. java 日历界面_Java实现简单日历小程序 Java图形界面小日历开发

    今天给大家介绍一下如何用java swing开发一款简单的小日历,下面我们来看代码: 首先创建一个calendarbean类,用于基本的日期计算: package other1; import jav ...

  5. java锁屏_Java防锁屏小程序代码实例

    为防止系统桌面自动锁屏,只需打成jar包,写个批处理程序start.bat,双击执行保持dos窗口执行即可,无其他影响. 程序设计为每30秒动一次鼠标,可根据需要调整. 附代码: package ma ...

  6. windows java 小程序_JAVA第一个窗体小程序

    import java.awt.*; public class Day1015_Frame { public static void main(String[] args) { Frame frame ...

  7. 微信小程序开发实战2 微信小程序编程基础

    2.微信小程序编程基础 2.1小程序目录结构 小程序包含一个描述整体程序的主体部分和多个小程序页面.一个小程序主体部分由三个文件组成,必须放在项目的根目录,如下: 文件 作用 app.js 小程序的入 ...

  8. 点餐系统部署文档,java后台部署和微信点餐小程序的部署

    准备工作 1,安装jdk8或者jdk11 2,安装mysql8.0(只要是8.0开通即可) 3,安装IntelliJ IDEA 开发工具(java) 4,安装微信小程序开发者工具 5,注册小程序获取小 ...

  9. 微信小程序系统教程Java版[3/3阶段]_微信小程序电商系统-翟东平-专题视频课程...

    微信小程序系统教程Java版[3/3阶段]_微信小程序电商系统-2445人已学习 课程介绍         微信小程序系统教程[初级阶段],微信小程序0基础学起,讲解微信小程序开发的基础知识. 微信小 ...

  10. 视频教程-微信小程序系统教程Java版[3/3阶段]_微信小程序电商系统-微信开发

    微信小程序系统教程Java版[3/3阶段]_微信小程序电商系统 微信企业号星级会员.10多年软件从业经历,国家级软件项目负责人,主要从事软件研发.软件企业员工技能培训.已经取得计算机技术与软件资格考试 ...

最新文章

  1. python分形几何_使用 Python 绘制分形: Koch 曲线、Julia 集、Mandelbrot 集
  2. 排序算法 —— 堆排序
  3. c++opencv显示中文_图像处理入门 100 题,有人把它翻译成了中文版!
  4. 支付时报错java.lang.RuntimeException: 【微信统一支付】发起支付, returnCode != SUCCESS, returnMsg = appid和mch_id不匹配
  5. mysql数据库约束详解_基于MySQL数据库的数据约束实例及五种完整性约束介绍
  6. python 安装 Pyside 出现 “Failed to find the MSVC compiler version 10.0 on your system”
  7. tp中自定义跳转页面
  8. maven checkstyle 文件_flink教程-在IntelliJ IDEA 中玩转 checkstyle
  9. [luogu1880] [NOI1995]石子合并
  10. data/mysql_error_trace.inc,09-在线挑战详细攻略-《真的很简单》
  11. 2020全国计算机二级office大纲,2018-2020年(最新)全国计算机等级考试二级MS Office高级应用考试大纲...
  12. SQL order by的用法
  13. 【NLP】第 6 章:XGBoost 超参数
  14. 智能合约安全漏洞检测技术研究综述——常见漏洞简述
  15. 软路由:AdGuardHome + OpenWRT 让你家的网络无广告无跟踪
  16. 【Natural Language Processing】语言模型(Language Modeling)
  17. 信息安全 SEED Lab2 Shellshock Attack
  18. 虚拟机服务器警报设置,设置VMware vCenter警报器获得更好的管理
  19. google charts
  20. 联合国维和女战士,巾帼不让须眉 | 经济学人全球早报精选

热门文章

  1. ES9023音频解码芯片的工作原理
  2. python基于PHP+MySQL的志愿者管理系统
  3. com.oracle:ojdbc6:12.1.0.1-atlassian-hosted‘ not found
  4. 带大家读python数据分析一书(三)
  5. 华为hn–wx9x笔记本电脑_华为荣耀9x多少钱 华为和荣耀笔记本差别
  6. ubuntu 20.04 设置DNS
  7. CCS安装失败的原因
  8. C语言及程序设计 套餐 课程主页
  9. AppleWatch 开发的一些知识总结
  10. Excel实现线性回归分析——高尔顿数据集、四重奏数据集