package bowlling;
import java.util.Scanner;
public class Bowlling {
private int[] number;
public Bowlling(){
Scanner in = new Scanner(System.in);
System.out.println("请输入本轮投球每次击中个数");
String[] num = null;
num = in.nextLine().split(" ");
int[] number = new int[num.length];
for(int i = 0; i < number.length; i++){
number[i] = Integer.valueOf(num[i]);
}
}
public int getnumber(int i)
{
return number[i];
}
public int getSnumber(){
int i;
for(i=0;i<20;i++)
if(number[i]==0)
break;
return i+1;
}
}
public class Player {
private int[] scores;
public int getscores(int i) {
return scores[i-1];
}
public void shots(Bowlling b){
int i,j=0;
for(i=0;i<20;i++){
if(j==9){
this.scores[j] = b.getnumber(i) + b.getnumber(i+1) + b.getnumber(i+2);
}
if(b.getnumber(i) == 10){
this.scores[j++] = 10 + b.getnumber(i+1)+ b.getnumber(i+2);
continue;
}
if(b.getnumber(i) + b.getnumber(i+1) == 10){
this.scores[j++] = 10 + b.getnumber(i+1);
continue;
}
if(b.getnumber(i) + b.getnumber(i+1) < 10){
this.scores[j++] = b.getnumber(i) + b.getnumber(i+1);
}
}
}
public static void main(String[] args){
Player p = new Player();
Bowlling b = new Bowlling();
p.shots(b);
System.out.println("1、本局比赛的得分为:" + p.getscores(9));
System.out.println("2、本局共投掷了" + b.getSnumber()+ "个球");
System.out.println("3、本局的第5轮得分是多少" + p.getscores(4));
}
}
计分方法:
保龄球的计分不难,每一局总共有十轮,每一轮里可投两球,一轮有十支球瓶,我们要尽量在两球之内把球瓶全部击倒,如果第一球就把全部的球瓶都击倒了,也就是“STRIKE”,画面出现“X”,就算完成一轮了,所得分数就是10分再加下两球的倒瓶数,但是如果第一球没有全倒时,就要再打一球了,如果剩下的球瓶全都击倒,也就是“SPARE”,画面出现“/”,也算完成一轮,所得分数为10分再加下一轮第一球的倒瓶数,但是如果第二球也没有把球瓶全部击倒的话,那分数就是第一球加第二球倒的瓶数,再接着打下一轮。依此类推直到第十轮。但是第十轮有三球,第十格时如果第一球或第二球将球瓶全部击倒时,可再加打第三球,如此就完成一局了。
需求分析:
I:输入
在控制台依次模拟输入保龄球的一局比赛中每轮每次投球击倒的个数(如:10 10 10 10 10 10 10 10 10 10 10 10)
P:过程 处理逻辑
O:输出
1、本局比赛的得分
2、本局共投掷了多少个球?
3、本局的第5轮得分是多少