【JavaSE04】Java中循环语句for,while,do···while-练习2

1.编写一个剪子石头布对战小程序

该法是穷举法:将所有情况列出来

import java.util.*;

public class Game{
	public static void main(String[] args){
		Scanner input=new Scanner(System.in);
		System.out.println("经典小游戏:剪刀石头布");
		System.out.println("游戏规则:1:剪刀;2:石头;3:布");
		System.out.println("您的起始分数为:10分");
		int score=10;
		System.out.println("请输入要大战几百回合:");
		int count=input.nextInt();
		
		
		//外层我出的什么
		for(int i=1;i<=count;i++){
			System.out.println("请出拳:");
			//玩家出拳
			int fist=input.nextInt();
			//电脑出拳
			int computer=(int)(Math.random()*3)+1;
			//考虑电脑产生随机数的原理,可以扩大取值范围,但只使用中间的三个数值
			//如变为1—9,但只用456,此时需要将规则换为:4:剪刀;5:石头;6:布
			//只需要在switch的外层加一个if判断条件,限制computer取值:computer>=4&&computer<=6;即可
			
			//与电脑PK比较
			switch(fist){
				case 1:
					if(computer==1){
						System.out.println("你们打平了,电脑出的剪刀");
					}else if(computer==2){
						System.out.println("你输了,电脑出的石头!");
						score--;
					}else{
						System.out.println("你赢了,电脑出的布!");
						score++;
					}
					break;
				case 2:
					if(computer==1){
						System.out.println("你赢了,电脑出的剪刀!");
						score++;
					}else if(computer==2){
						System.out.println("你们打平了,电脑出的石头!");
					}else{
						System.out.println("你输了,电脑出的布!");
						score--;
					}
					break;
				case 3:
					if(computer==1){
						System.out.println("你输了,电脑出的剪刀");
						score--;
					}else if(computer==2){
						System.out.println("你赢了,电脑出的石头!");
						score++;
					}else{
						System.out.println("你们打平了,电脑出的布!");
					}
					break;
			}
		}
		System.out.println("您最后的得分为:"+score);
		
	}
	
}

方法二:只需要比较

import java.util.Scanner;

public class Test6{
	public static void main(String[] args){
		//做一个剪刀石头布的对战小程序
		//1代表剪刀,2代表石头,3代表布
		Scanner input=new Scanner(System.in);
		int computer=(int)(Math.random()*3)+1;
		
		//方案一:下面是无限循环,还以优化,由用户开控制玩的局数
		//考虑电脑产生随机的概率问题,可以将取值范围变为1-5,我们用2,3,4来代表特定的含义,遇到1和5就舍弃
		for(;;){
			System.out.println("来玩剪刀石头布吧!1代表剪刀,2代表石头,3代表布,请输入:");
			int pk=input.nextInt();
			if((pk==1&&computer==3)||(pk==3&&computer==1)){
				if(pk>computer){
					System.out.println("你出的:"+pk+",电脑出的:"+computer+",你赢了");
				}else{
					System.out.println("你出的:"+pk+",电脑出的:"+computer+",电脑赢了");
				}
			}else if(pk==computer){
				System.out.println("你出的:"+pk+",电脑出的:"+computer+",你们不分上下");
			}else{
				if(pk<computer){
					System.out.println("你出的:"+pk+",电脑出的:"+computer+",你赢了");
				}else{
					System.out.println("你出的:"+pk+",电脑出的:"+computer+",电脑赢了");
				}
			}
		}
		
		//最笨的方法:将9种情况用if···else罗列出来
		
	}
}

2.要求循环录入2个班的学员成绩

假设每个班都有3个学员,依次录入,统计超过90分的学员人数,以及这批超过90分的学员平均分。
这里写图片描述

import java.util.Scanner;

public class Test5{
	public static void main(String[] args){
		//要求循环录入2个班的学员成绩,假设每个班都有3个学员,
		//依次录入,统计超过90分的学员人数,以及这批超过90分的学员平均分。
		Scanner input=new Scanner(System.in);
		
		int score=0;
		int count=0;
		double sum=0;
		//外层为班级
		for(int i=1;i<=2;i++){
			//内层为班中的学员
			for(int j=1;j<=3;j++){
				System.out.println("请输入"+i+"班第"+j+"个学员成绩:");
				score=input.nextInt();
				if(score>90){
					count++;
					sum+=score;
				}
			}
		}
		System.out.println("两个班超过90的学员人数:"+count);
		
		//对于没有人超过90情况的处理
		if(count==0){
			System.out.println("两个班超过90的学员成绩平均分为:0");
		}else{
			System.out.println("两个班超过90的学员成绩平均分为:"+sum/count);
		}
	}
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值