java写一个程序给保龄球比赛计分的程序

thoughwork思沃学院的题,还想看看能不能提前去心仪的公司体会下结对编程顺便感受下公司气氛,可是提交的时候发现代码写错了,要求用的是函数我却没用,提交总是出问题,好难过,还不想改,也改不对,毕竟水平渣渣难过难过


写一个程序给保龄球比赛计分的程序

输入: 描述保龄球比赛成绩的字符串 (描述见下面)
输出: 整数分

计数规则

每一局保龄球比赛,也就是我们这里的一行, 都有 10 格。格被称之为“frame”。 在每一格里, 玩家有两次机会试图击倒全部 10 个瓶。

如果第一次就击倒了全部 10 个瓶,这称之为“strike”。这一格就结束了。 这一格的分数等于 10 加上接下来两球击倒的瓶数的总和。

如果一格中的第二个球击倒了全部 10 个瓶,称之为“spare”。这一格就结束了。 这一格的分数等于 10 加上接下来一个球击倒的瓶数。

如果两个球之后,仍然有瓶子没有被击倒,那么这一格的分数就是两次击倒的瓶数的总和。

如果你在最后一格(第 10 格)拿到一个 spare,你就会得到一次额外的发球机会。 如果你在最后一格拿到了 strike,你就会得到两次额外的机会。 如果额外的机会击倒了全部的球,不会重复之前的流程,额外机会的分数只用来计算最后一格的分数。

游戏的分数为所有格分数的总和。

举例

X 表示一个 strike
/ 表示一个 spare
- 表示一个 miss
| 表示一格的分界线
|| 之后的字符表示最后一格的额外机会
实例 1
输入:X|X|X|X|X|X|X|X|X|X||XX
输出:300

10 格 10 个 strike,两个额外机会都是 strike。

  • 每格的分数 = 10 + 接下来两球的分数 = 10 + 10 + 10 = 30
  • 总共的分数 = 10 格 X 30 = 300
实例 2
输入:9-|9-|9-|9-|9-|9-|9-|9-|9-|9-||
输出:90

每格第一个球击倒了 9 个瓶,第二个球一个没击倒,全都 miss 了。 没有额外机会。

  • 每一格 9 分
  • 总共的分数 = 10 格 X 9 = 90 分
实例 3
输入:5/|5/|5/|5/|5/|5/|5/|5/|5/|5/||5
输出:150

每格第一个球击倒了 5 个瓶,第二个球击倒了剩下的 5 个,得到了一个 spare。 一个额外机会,击倒了 5 个瓶。

  • 每格的分数 = 10 + 下一个球的分数 = 10 + 5 = 15
  • 总共的分数 = 10 格 * 15 = 150
实例 4
输入:X|7/|9-|X|-8|8/|-6|X|X|X||81
输出:167

import java.util.Scanner;

public class BowlingGame {
	
	int count=1;
	Scanner sc=new Scanner(System.in);
	int fenshu;
	int fenshu2;
	int fujia,fujia2;
	int jieguo;
	int a=-1,b=-1;
	int flag=0,flags;
	static int chengji=0,chengji1,chengji2,chengji3,chengji4,chengji5,chengji6,chengji7,chengji8;
	public static void main(String[] args) {
		BowlingGame t =new BowlingGame();
		t.getBowling(); 
		
		System.out.println("游戏结束,总成绩为"+(chengji-chengji2));
		
	}
//要求用的函数
   /*public int getBowlingScore(String bowlingCode) {
    	
        return 0;
    }*/
//
          private void getBowling() {
		// TODO Auto-generated method stub	
		
		while(count<12) {
		fenshu=sc.nextInt();
		
		if(fenshu<10&&fenshu>-1)
		{
		    System.out.println("第"+count+"轮第1次击球,分数为:"+fenshu);
		    this.Second();
		    
		    if(count-a>1) {
		    	flag=0;
		    }else {
		    	flag-=10;
		    }
		   if(count==10&&fenshu2!=10) {
			   break;
		   }
		}
		else if(fenshu==10)
		{
			 System.out.println("第"+count+"轮第1次击球,分数为:"+fenshu+"(附加两次击球机会,此轮结束)");
			  a=count;
			 flag+=10;
		}
		else
		{
			System.out.println("输入错误,重新输入");
			continue;
		}
	
		
		  if(count==a&&flag==30&&count!=1) {
			chengji4=30;
			System.out.println("第44"+(count-2)+"轮附加两次击球机会结束,总分数为"+chengji4);
			chengji=chengji+chengji4;
			
		}else if(count==a+1&&flag==20&&count!=1) {
			chengji5=20+fenshu;
			chengji6=10+fenshu+fenshu2;

			System.out.println("第66"+(count-2)+"轮附加两次击球机会结束,总分数为"+chengji5);
			chengji=chengji+chengji5;
			System.out.println("第77"+(count-1)+"轮附加两次击球机会结束,总分数为"+chengji6);
			chengji=chengji+chengji6;
			//flag=0;
		}else if(count==a+1) {
			this.jisuan1();
			
		}else if(count==a&&flag==40&&count!=1&&count!=2) {
			this.jisuan4();
		}
		  
		if(count==b+1)
		{
			
			this.jisuan3();
		}
		count++;
		
		System.out.println("-----------------------------游戏成绩为"+chengji);
	}
		
	return;
}

	private void jisuan4() {
		// TODO Auto-generated method stub
		System.out.println("第pp"+(count-2)+"轮附加两次击球机会结束,总分数为"+chengji1);
		chengji=chengji+chengji1;
		flag-=10;
	}

	private void jisuan3() {
		// TODO Auto-generated method stub
		chengji3=10+fenshu;
		System.out.println("第"+b+"轮附加一次击球机会结束,总分数为"+chengji3);
		chengji=chengji+chengji3;
	}

	private void jisuan2() {
		// TODO Auto-generated method stub
		chengji2=fenshu+fenshu2;
		System.out.println("第"+count+"轮击球结束,总分数为"+chengji2);
		chengji=chengji+chengji2;
	}

	private void jisuan1() {
		// TODO Auto-generated method stub
		chengji1=10+fenshu+fenshu2;
		
		System.out.println("第"+a+"轮附加两次击球机会结束,总分数为"+chengji1);
		chengji=chengji+chengji1;
	}

	private void Second() {
		// TODO Auto-generated method stub
		fenshu2=sc.nextInt();
		if(fenshu2<10&&fenshu2>-1)
		{
		    System.out.println("第"+count+"轮第2次击球,分数为:"+fenshu2);
		    this.jisuan2();
		}
		else if(fenshu2==10)
		{
			System.out.println("第"+count+"轮第2次击球,分数为:"+fenshu2+"(附加一次击球机会,此轮结束)");
			b=count;
		}
		else
		{
			System.out.println("输入错误,重新输入");
		    this.Second();
		}
	}
}


  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值