import java.util.Arrays;
import java.util.Scanner;public class test5 {public static int flag[] =new int[10];//判断状态: 0: 2次没中10;, 1 :补中 ;2:第一次全中public static int[] finScore =new int[10];//每轮分数public static int[][] eachScore = new int[10][3];//每次分数,最后一次若有3次另外算/** 记录每轮的得分* */public static void getScore(int firstSore,int secondSore,int count ){if(firstSore!=10){eachScore[count][0] = firstSore;if(10-firstSore>secondSore){flag[count]=0;eachScore[count][1]=secondSore;finScore[count] =firstSore+secondSore;System.out.println("本轮为"+(count+1)+"轮,2次都没全中哦~"+"本轮成绩为"+finScore[count]);}else if(10-firstSore==secondSore){flag[count]=1;eachScore[count][1]=secondSore;finScore[count]=10;System.out.println("本轮为"+(count+1)+"轮,补中。"+"本轮成绩暂时为"+finScore[count]+",等下一轮补分");}}else{flag[count]=2;eachScore[count][0]=10;eachScore[count][1]=0;finScore[count]=10;System.out.println("本轮为"+(count+1)+"全中。"+"本轮成绩暂时为"+finScore[count]+",等下一轮补分");}}/** 补分方法* 全中,补2次* 补中,补一次* flag 判断类型* count 补哪一轮的分* */public static void supPonit(int flag,int count){if(flag==1){finScore[count]+=eachScore[count+1][0];}else if(flag==2){if(eachScore[count+1][0]!=10){finScore[count]+=eachScore[count+1][0]+eachScore[count+1][1];}else if(count!=8)finScore[count]+=eachScore[count+1][0]+eachScore[count+2][0];elsefinScore[count]+=eachScore[count+1][0]+eachScore[count+1][1];}}public static void listFinScore(){for(int i=0;i<10;i++){System.out.println("第"+(i+1)+"轮得分为"+finScore[i]+"。详细为"+eachScore[i][0]+","+eachScore[i][1]+","+eachScore[i][2]);}}public static void main(String []args){Scanner sc = new Scanner(System.in);String iString =sc.next();String iStrings[] = new String[iString.length()]; int iInt []  = new int[iString.length()];for(int i=0;i<iString.length();i++){iStrings[i] =String.valueOf(iString.charAt(i));if(iStrings[i].equals("X"))iStrings[i]="10";if(iStrings[i].equals("/")){iStrings[i] =10-Integer.parseInt(iStrings[i-1])+"";}if(iStrings[i].equals("-"))iStrings[i] ="0";iInt [i] = Integer.parseInt(iStrings[i]);}int count =0;for(int i=0;i<iInt.length;i++){if(count<9){if(iInt[i]==10){getScore(10,0,count);iInt[i]=-1;}else{getScore(iInt[2*i],iInt[2*i+1],count);iInt[2*i]=-1;iInt[2*i+1]=-1;}count++;continue;}if(iInt[i]!=-1){//10次if(iInt[i]==10){eachScore[9][0]=10;eachScore[9][1]=iInt[i+1];eachScore[9][2]=iInt[i+2];finScore[9] =10+iInt[i+1]+iInt[i+2];break;}else if(iInt[i]+iInt[i+1]==10){eachScore[9][0]=iInt[i];eachScore[9][1]=iInt[i+1];eachScore[9][2]=iInt[i+2];finScore[9] =iInt[i]+iInt[i+1]+iInt[i+2];break;}else{eachScore[9][0]=iInt[i];eachScore[9][1]=iInt[i+1];finScore[9]=iInt[i]+iInt[i+1];break;}}}/*for(String s :iStrings)System.out.println(s);*/for(int i=0;i<10;i++){System.out.print(i+1+":  ");for(int j=0;j<3;j++)System.out.print(eachScore[i][j]+" ");System.out.println();}for(int j=0;j<9;j++){supPonit(flag[j],j);}int re =0;for(int j=0;j<10;j++){re+=finScore[j];}listFinScore();System.out.println(re);}}

我的方法比较繁琐,比如将第10次单独计算,比如是先记录每次得分再重新返回补分。但是这样会直观一些。

java实现保龄球规则相关推荐

  1. 【JAVA】保龄球记分游戏

    最近遇到一个保龄球记分的Game题目,回来查找了一下资料,现将代码拿出来共享.(代码的一切版权归原作者所有) 题目: 保龄球规则阐述:  保龄球是一种比赛,比赛者把一个哈密瓜大小的球顺着一条窄窄的球道 ...

  2. java继承方法规则或规律

       方法的继承与属性的继承有很大的不同,属性任何继承方式均可,而方法则有各种限制,于是动力节点Java培训机构小编在这里做了一个简单的总结. 1.修饰符相同的方法覆盖,即只改内部,不改外部 2.访问 ...

  3. Java代码的维护与更新,Java常用的规则引擎,让你变动的代码更加容易维护

    Java常用的规则引擎,让你变动的代码更加容易维护 Java常用的规则引擎,让你变动的代码更加容易维护 在本文中,我们将介绍Java中一些最受欢迎的规则引擎. 规则引擎由推理引擎发展而来,是一种嵌入在 ...

  4. java中错误的源文件,关于Java源文件结构规则,说法错误的是()A.版权信息必须在java文件的开头B.package语句在imports...

    关于Java源文件结构规则,说法错误的是()A.版权信息必须在java文件的开头B.package语句在imports 更多相关问题 霍乱患者产生"米泔样"粪便由下列哪种致病因素直 ...

  5. Java默认值规则——各种数据类型的初试值是什么?

    默认值规则指的就是不给变量赋值时,它自己初始化为默认值,不同数据类型默认值不同具体如下表所示: 数据类型 默认值 boolean false char " "(空格) byte 0 ...

  6. Java标识符命名规则,运算符,分支结构

    Java标识符命名规则,运算符,分支结构 1 Java标识符命名规则 1.1命名规则案例 163邮箱,注册邮箱名限制6~18个字符,可使用字母,数字,下划线,需要以字母开头命名规则分析1.有长度限制2 ...

  7. Java开源的规则引擎 Drools 电商行业实战(含完整代码)

    前言 我所在项目组刚好接到一个领取优惠券需求,具体需求是用户领取的各种类型的优惠券(比如:代金券.折扣券)数量不能超过某个自定义数量,因考虑到领取限制数量是动态的,另外考虑到扩展性,满足将来业务规则的 ...

  8. Java生成一定规则递增编号

    目录 前言 一.需求描述 二.代码实现 1.代码实现Demo 2.代码解释 三.String.format()方法 总结 前言 Java 中如何生成一定规则递增编号? 一.需求描述 项目需求中有时需要 ...

  9. java变量命名规则_Java变量命名规则规范

    Java变量命名规则规范 分类 Camel 标记法:首字母是小写的,接下来的单词都以大写字母开头 Pascal 标记法:首字母是大写的,接下来的单词都以大写字母开头 匈牙利标记法:在以Pascal标记 ...

  10. java风控系统规则引擎_如何设计一套规则引擎系统

    很早之前就想写一篇关于「规则引擎」的文章,但是一直苦于没有时间.刚好最近给团队小伙伴梳理了我设计的引擎的使用和原理,正好借此机会在此写下我们的心得. 「规则引擎」系统一般而言,在风控中使用较多,但是经 ...

最新文章

  1. HTML页面显示透视效果,html – CSS – 对背景图像的“敲除”/透视效果
  2. 原创 | 2020年Java程序员应该学习的10大技术
  3. 高考英语口试计算机系,高考英语口试材料.docx
  4. Centos修改yum源为阿里源
  5. 7.Linux 高性能服务器编程 --- Linux 服务器程序规范
  6. 自动驾驶_感知_目标检测(基于图像)
  7. treeview 如何从多个数据表中获取数据动态生成 [提问]
  8. OpenGL二维纹理映射(2D textures)
  9. python画折线图两种写法
  10. 百度网盘下载器更新啦!PanDownload又带来了「资源搜索」功能!
  11. 操作系统server 2012 r2 安装简体中文语言包
  12. Java成员方法getinfo_Java Swagger.getInfo方法代码示例
  13. java邮件抄送_JAVA实现邮件抄送,密送,多个附件发送
  14. 如何免费注册申请到【苹果开发者账号】
  15. 换根dp 洛谷+upc
  16. 为你的树莓派安装xbox手柄驱动~
  17. 【情人节特别篇】想知道玫瑰在哪些城市最畅销嘛?
  18. H5 VIDEO标签视频黑屏的原因及解决方法
  19. Ext.TabPanel学习
  20. 前端进阶-ES6函数

热门文章

  1. 锂电池充电——充电保护电路
  2. 使用 JMeter的性能测试
  3. 论文笔记1 MOEFL Multi-objective Evolutionary Federated Learning
  4. 控制台(console)与终端(terminal)理解
  5. Android屏幕共享-传输图片
  6. DOJO Dijit布局
  7. bilibili执行董事陈睿:我在进B站之前是一个正常人
  8. Android studio Minimum supported Gradle version is 7.2. Current version is 7.0.2.
  9. linux中重要文件夹介绍
  10. 网络打印机无法接收打印命令