package com.java.bowlingscore1;

import java.util.Arrays;

public class Game {

int[] bowlingScore = new int[21]; //用来存放投掷击倒的数目

int ball=0;                       //数组下标

int score;//分数

int countframe=0;//记录当前是第几轮

boolean firstThrow=true;//判断是不是第一次投掷

public void add(int pins){//添加分数 将分数添加到数组中

bowlingScore[ball++] = pins;

judgefirstThrow(pins);          //调用下面的判断函数

}

/*firstthrow 默认为真由规则可以知道第一球如果全中就进入下一轮了,因此

* 首先判断添加的是不是为10,是就直接让countframe加1,不是就把firstthrow改为false,

*

*  第二次调用add的时候firstthrow为false投两次一轮结束 countframe加1,

*  将firstthrow改为true

**/

public void judgefirstThrow(int pins){

if(firstThrow){

if(pins==10){

countframe++;

}else{

firstThrow=false;

}

}else{

firstThrow=true;

countframe++;

}

}

public int getcurrentFrame(){ //返回这是第几轮

return countframe;

}

public int score(){       //返回当前轮的得分

return scoreForFrame(countframe);

}

/*

* 当前轮的计算方法循环当前轮的次数

* a[0]赋值第一次击球firstthrow 然后下标自增一;判断第一次都不是击倒了10个

* 规则 保龄球一轮两个球 第一个全中就是之前的分数+10+后面两次投掷的分数

* 补中 两次一共击倒10个 之前的分数加两次击倒的10分加后面一次的的分数

* */

public int scoreForFrame(int frame){

int score=0;

int ball=0;

for(int countframe=0;countframe

int firstThrow = bowlingScore[ball++];

if(firstThrow==10){

score= score+10+bowlingScore[ball]+bowlingScore [ball+1];

}else{

int secondThrow = bowlingScore[ball++];

int framScore = firstThrow+secondThrow;

if(framScore==10){

score=framScore+bowlingScore[ball]+score;

}else{

score = framScore+score;

}

}

}

return score;

}

//测试

public static void main(String[] args) {

Game g = new Game();

g.add(1);

g.add(4);

g.add(4);

g.add(5);

g.add(6);

g.add(4);

g.add(5);

g.add(5);

g.add(10);

g.add(0);

g.add(1);

g.add(7);

g.add(3);

g.add(6);

g.add(4);

g.add(10);

g.add(2);

g.add(8);

g.add(6);

System.out.println(Arrays.toString(g.bowlingScore));

System.out.println(g.getcurrentFrame());

for(int i = 1;i<11;i++){

System.out.print(g.scoreForFrame(i)+  "  ");

}

}

}

自己没看书敲的,就是先看了书摆脱不了书上思路的影响了,下次还是应该先敲一遍在看书.做测试也实在函数里写个main函数做测试,根本就不是那啥敏捷开发那样写测试类,重构倒是有点感觉了 虽然没哟进行重构

java保龄球计分_自己写的java保龄球记分相关推荐

  1. java实现计分_非常实用的java自动答题计时计分器

    该小程序使用java语言编写,让用户计算10以内的加减乘除法,特别适合小学开始学习加减乘除法的学生,能很好地锻炼他们的运算能力,并过计分计时的游戏性质引起学习兴趣! 运行该程序会弹出一个窗口,按ent ...

  2. java n 转换_自己写的Java N进制互相转换(2=N=16)

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 第一次发帖 欢迎大家指点缺点 import java.util.Scanner; import java.util.Stack; /** * N进制转换( ...

  3. 写java线程导致电脑内存不足_如何写出让java虚拟机发生内存溢出异常OutOfMemoryError的代码...

    程序小白在写代码的过程中,经常会不经意间写出发生内存溢出异常的代码.很多时候这类异常如何产生的都傻傻弄不清楚,如果能故意写出让jvm发生内存溢出的代码,有时候看来也并非一件容易的事.最近通过学习< ...

  4. java实现报表_用存储过程和 JAVA 写报表数据源有什么弊端?

    用存储过程和 JAVA 写报表数据源有什么弊端?跟着小编一起来一看一下吧! 我们在报表开发中经常会使用存储过程准备数据,存储过程支持分步计算,可以实现非常复杂的计算逻辑,为报表开发带来便利.所以,报表 ...

  5. java 判断类型_如何快速入门Java编程学习(干货)

    一.初识Java 1.生活中的程序: 从起床到教室上课的过程 穿衣打扮>起床>洗漱>出宿舍>>吃早餐>到教室 按照特定的顺序去完成某一件事的过程我们叫做生活中的程序 ...

  6. java python算法_用Python,Java和C ++示例解释的排序算法

    java python算法 什么是排序算法? (What is a Sorting Algorithm?) Sorting algorithms are a set of instructions t ...

  7. 做Java头发少_这35个Java代码优化细节,你用了吗

    链接:https://www.jianshu.com/p/6e472304b5ac 前言 代码 优化 ,一个很重要的课题.可能有些人觉得没用,一些细小的地方有什么好修改的,改与不改对于代码的运行效率有 ...

  8. java 异常信息_优雅的异常处理 -- Java中的异常

    处理异常自己处理 try-catch抛出让别人处理 throws 获得异常信息 直接打印异常对象 通过异常对象调用getMessage()方法获得 通过异常对象调用printStackTrace()方 ...

  9. 支持java虚拟主机_为何缺乏支持Java的虚拟主机

    现在很多站长们,都青睐于香港虚拟主机建站.现在常见的是asp和PHP的程序空间很多,但是Java的少之又少,下面小编我给大家聊一聊! 一.香港Java虚拟主机成本高 使用Java程序建站,就必须要用支 ...

  10. java必读书籍_最佳5本Java性能调优书籍–精选,必读

    java必读书籍 为什么Java开发人员应该阅读有关性能调优的书? 当我很久以前第一次面对这个问题时,我以为以后会做,但是我很长一段时间都没有回过头来. 仅当我在用Java编写的任务关键型服务器端财务 ...

最新文章

  1. WMIC 命令如何使用?
  2. centos 7 ldap php7,centOS更新php7
  3. 实现WebMvcConfigurer接口扩展Spring MVC的功能
  4. Spark与Mysql(JdbcRDD)整合开发
  5. 微软Azure、谷歌GAE、亚马逊AWS比較
  6. JMX实现远程服务器Tomcat系统监控之二
  7. java单点登录需求分析与代码实现
  8. 基于STM32设计的校园一卡通项目-详解原理
  9. 图像处理中关于矩的解释
  10. 自定义一个Chrome翻译插件
  11. 女朋友要求道歉100遍:普通人和程序员的做法分别是:
  12. oracle使用sql关闭trace日志,Linux清理Oracle日志巧用close_trace命令释放误删trace文件...
  13. 股票交易下单接口-接口设计规则
  14. vk和uview表单图片上传
  15. **cmd查看已连接的网络密码**
  16. 纳税服务系统七(投诉管理模块)【显示投诉信息、处理回复、我要投诉、Quartz自动受理、统计图FusionCharts】...
  17. 2020高压电工证考试及高压电工模拟考试系统
  18. 财管公式计算机哪个是开平方,中级会计机考问题:财管怎么写公式?没有计算器怎么办...
  19. C#通过adb传输安卓设备数据
  20. 【历史上的今天】8 月 11 日:苹果电脑之父诞生;阿里巴巴收购雅虎中国;OpenAI 击败电竞世界冠军

热门文章

  1. 看 SICP 不如先看 The Little Schemer
  2. 初中英语语法(006)-特殊疑问句·祈使句·感叹句
  3. Mac spotlight无法搜索的解决方法
  4. js对象深浅拷贝,来,试试看!
  5. ip pssql 登录写法_plsql 连接远程服务器数据库无法登录
  6. c语言解惑 指针 数组 函数和多文件编程,C语言解惑 指针、数组、函数和多文件编程...
  7. win10 C盘扩大容量
  8. 关于I2C调试过程中遇到的一些细节性的问题(包括定位Master read-->Slaver send不成功的问题)
  9. Swift - 访问通讯录-使用AddressBook.framework和AddressBookUI.framework框架实现
  10. 聪明的猴子(BZOJ 2429)