为了账号安全,请及时绑定邮箱和手机立即绑定

自己写的java保龄球记分

标签:
Java

         

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<frame;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函数做测试,根本就不是那啥敏捷开发那样写测试类,重构倒是有点感觉了 虽然没哟进行重构

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
移动开发工程师
手记
粉丝
64
获赞与收藏
368

关注作者,订阅最新文章

阅读免费教程

  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

举报

0/150
提交
取消