码迷,mamicode.com
首页 > 其他好文 > 详细

打保龄球求分数

时间:2014-10-27 22:56:01      阅读:220      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   color   ar   java   for   sp   div   

初学者写的,好的请借鉴,不好的勿喷!

保龄球积分规则:

保龄球一局由10轮组成。球员前9轮中,除了打出全中球外,每轮都有两次投球机会。第10轮全中时再奖励两次投球机会,奖励球的得分应累计在该局的总分内。如果第10轮为补中,则再奖励一次投球机会,所得分同样累计在该局的总分内。如果从第1轮的第一个球到第10轮的两个奖励全部是一次击倒球瓶的话,即为满分300分。

保龄球成绩记录在记分格上。每局球记分格上共有10格,第1格到第9格各有两个小栏。第10格则有三个小栏。第一栏记录的是第一次击倒的球瓶数,或是记载“全中”的符号即[×]。第二栏记录的是第二次击倒的球瓶数或“补中”的符号即[/]。第10格的第三栏只有在第10轮投球“全中”或“补中”时才用得上。特别注意的是记分栏记录的是每轮得分的累计分,而不是每轮的得分。每一格投球可能出现三种情况:

补中。每轮的第一次掷球未能将全部球瓶击倒,第二次掷球将剩余的球瓶全部击倒,称为“补中”。此轮的得分是10分加上下一次掷球击倒的瓶数。如果该轮第一次掷球未得分,第二次掷球将所有球瓶击倒,也算作为补中。

失球。无论何种情况,在一格的两次投球时,未能击倒所有10个瓶,此轮的分数为击倒的瓶数。在每轮第一击球时可能会出现分瓶,即第一次投球击倒部分球瓶(①号球瓶必须被击倒),余下的两个或两个以上球瓶成分开的形状。出现分瓶多数情况会导致失球。

全中。每轮的第一次掷球将全部球瓶击倒,称为“全中”。这一轮就此结束,不再进行第二次掷球。此轮的得分是10分加下两次投球击倒的瓶数。

第十格的记分情况比较特殊:

如果第一球为全中,则追加两次投球机会,第十格得分为10分加上追加两次投球击倒的瓶数。如果第二次投球未补中,则第十格得分为第十格所击倒的瓶数。如果第二次投球补中,则追加一次投球机会,第十格得分为10分加上追加一次投球击倒的瓶数。
代码:
  1 package com.fj;
  2 
  3 import java.util.Scanner;
  4 
  5 public class Bowling {
  6     public static void main(String[] args) {
  7         Scanner sc = new Scanner(System.in);
  8         boolean isContinue = true;
  9         int[][] innings = new int[11][4];
 10         int flage = 0;
 11         for (int i = 0; i < innings.length && isContinue; i++) {
 12             for (int j = 0; j < innings[i].length - 2 && isContinue; j++) {
 13                 System.out.print("请输入第" + ( i + 1) + "局,第" + (j + 1) + "次击打倒的瓶子数目:");
 14                 innings[i][j] = sc.nextInt();
 15                 if (i <= 9) {
 16                     if (j == 0) {
 17                         if (innings[i][j] > 10 || innings[i][j] < 0) {
 18                             System.out.println("输入错误!");
 19                             j--;
 20                         }else if (innings[i][j] == 10) {
 21                             if (i == 9) {
 22                                 flage = 2;
 23                             }
 24                             j++;
 25                         }
 26                     }else {
 27                         if (innings[i][j] <0 || innings[i][j] > (10 - innings[i][j - 1])) {
 28                             System.out.println("输入错误!");
 29                             j--;
 30                         }else {
 31                             if (i == 9) {
 32                                 if (innings[i][j] + innings[i][j - 1] == 10) {
 33                                     flage = 1;
 34                                 }
 35                             }
 36                         }
 37                         
 38                     }
 39                     if (flage == 0 && i == 9 && j != 0) {
 40                         isContinue =false;
 41                     }
 42                 }
 43                 else {
 44                     if (flage == 2) {
 45                         if (innings[i][j] > 10 || innings[i][j] < 0) {
 46                             System.out.println("输入错误!");
 47                             j--;
 48                         }
 49                         else {
 50                             if (j == 1) {
 51                                 if (innings[i][j - 1] < 10) {
 52                                     if (innings[i][j - 1] + innings[i][j] > 10) {
 53                                         System.out.println("输入错误!");
 54                                         j--;
 55                                     }
 56                                 }
 57                             }
 58                         }
 59                     }
 60                     if (flage == 1) {
 61                         if (innings[i][j] > 10 || innings[i][j] < 0) {
 62                             System.out.println("输入错误!");
 63                             j--;
 64                         }
 65                         else {
 66                             isContinue = false;
 67                         }
 68                     }
 69                 }
 70             }
 71         }
 72         
 73         for (int i = 0; i < innings.length - 1; i++) {
 74             if (i <= 8) {
 75                 if (innings[i][0] == 10) {
 76                     if (innings[i + 1][0] == 10) {
 77                         innings[i][2] = innings[i][0] + innings[i + 1][0] + innings[i + 2][0];
 78                     }
 79                     else {
 80                         innings[i][2] = innings[i][0] + innings[i + 1][0] + innings[i + 1][1];
 81                     }
 82                 }
 83                 else if (innings[i][0] + innings[i][1] == 10){
 84                     innings[i][2] = innings[i][0] + innings[i][1] +innings[i + 1][0];
 85                 }
 86                 else {
 87                     innings[i][2] = innings[i][0] + innings[i][1];
 88                 }
 89                 
 90                 
 91             }
 92             if (i == 9) {
 93                 if (innings[i][0] == 10) {
 94                     innings[i][2] = innings[i][0] + innings[i + 1][0] + innings[i + 1][1];
 95                 }
 96                 else if (innings[i][0] + innings[i][1] == 10){
 97                     innings[i][2] = innings[i][0] + innings[i][1] + innings[i + 1][0];
 98                 }else {
 99                     innings[i][2] = innings[i][0] + innings[i][1];
100                 }
101             }
102             if (i == 0) {
103                 innings[i][3] = innings[i][2];
104             }else {
105                 innings[i][3] = innings[i - 1][3] + innings[i][2];
106             }
107         }
108         System.out.println("轮数\t第一次击倒数\t第二次击倒数 \t本轮得分\t累计得分");
109         for (int i = 0; i < innings.length; i++) {
110             System.out.print(i + 1 + "\t");
111             for (int j = 0; j < innings[i].length; j++) {
112                 if (j == 2 || j == 1) {
113                     System.out.print("\t");
114                 }
115                 System.out.print(innings[i][j] + "\t");
116             }
117             System.out.println();
118         }
119     }
120 }

输出:

请输入第1局,第1次击打倒的瓶子数目:5
请输入第1局,第2次击打倒的瓶子数目:5
请输入第2局,第1次击打倒的瓶子数目:5
请输入第2局,第2次击打倒的瓶子数目:5
请输入第3局,第1次击打倒的瓶子数目:5
请输入第3局,第2次击打倒的瓶子数目:5
请输入第4局,第1次击打倒的瓶子数目:5
请输入第4局,第2次击打倒的瓶子数目:5
请输入第5局,第1次击打倒的瓶子数目:5
请输入第5局,第2次击打倒的瓶子数目:5
请输入第6局,第1次击打倒的瓶子数目:5
请输入第6局,第2次击打倒的瓶子数目:5
请输入第7局,第1次击打倒的瓶子数目:5
请输入第7局,第2次击打倒的瓶子数目:5
请输入第8局,第1次击打倒的瓶子数目:5
请输入第8局,第2次击打倒的瓶子数目:5
请输入第9局,第1次击打倒的瓶子数目:5
请输入第9局,第2次击打倒的瓶子数目:5
请输入第10局,第1次击打倒的瓶子数目:5
请输入第10局,第2次击打倒的瓶子数目:5
请输入第11局,第1次击打倒的瓶子数目:5
轮数 第一次击倒数 第二次击倒数 本轮得分 累计得分
1   5      5         15      15
2   5      5         15      30
3   5      5         15      45
4   5      5         15      60
5   5      5         15      75
6   5      5         15      90
7   5      5         15      105
8   5      5         15      120
9   5      5         15      135
10   5      5         15      150
11   5      0         0     0

打保龄球求分数

标签:style   blog   http   color   ar   java   for   sp   div   

原文地址:http://www.cnblogs.com/f644135318/p/4055221.html

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