码迷,mamicode.com
首页 > 编程语言 > 详细

自己写的java保龄球记分

时间:2018-08-10 17:04:30      阅读:166      评论:0      收藏:0      [点我收藏+]

标签:package   返回   title   int   .com   first   images   RoCE   数组   

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

自己写的java保龄球记分

标签:package   返回   title   int   .com   first   images   RoCE   数组   

原文地址:http://blog.51cto.com/10760006/2157302

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!