第七章 循环结构综合练习

一、本章任务

    完成青鸟迷你游戏平台的开发

二、目标

  •     会定义变量

  •     会使用数据类型和运算符

  •     会使用选择结构

  •     会使用循环结构

三、内容

1 上机练习一

需求:

    用户进入游戏平台后,可以选择遠的游戏,程序运行结果如下    

        

思路

  • 获得用户的输入:Scan

  • 输出:System.out.println()

  • 选择结构:if 、switch

实现

  • 第一种方法

  1. public class SelectGame{

  2. public static void main(String[] args) {

  3. System.out.println("欢迎进入青鸟游迷你戏平台 ");

  4. System.out.println("请选择您喜爱的游戏: ");

  5. System.out.println("*******************************");

  6. System.out.println(" 1.斗地主");

  7. System.out.println(" 2.斗牛");

  8. System.out.println(" 3.泡泡龙");

  9. System.out.println(" 4.连连看");

  10. System.out.println("******************************* ");

  11. int choice; //用户选择

  12. boolean isRight; //输入是否正确

  13. System.out.print("请选择,输入数字:");

  14. Scanner input = new Scanner(System.in);

  15. do{

  16. isRight = true;

  17. choice = input.nextInt();

  18. switch (choice) {

  19. case 1:

  20. System.out.println("您已进入斗地主房间!");

  21. break;

  22. case 2:

  23. System.out.println("您已进入斗牛房间!");

  24. break;

  25. case 3:

  26. System.out.println("您已进入泡泡龙房间!");

  27. break;

  28. case 4:

  29. System.out.println("您已进入连连看房间!");

  30. break;

  31. default:

  32. System.out.print("输入错误,请重新输入数字:");

  33. isRight = false;

  34. break;

  35. }

  36. }while(!isRight);

  37. }

  38. }

  • 第二种方法

  1. public class SelectGame2 {

  2. public static void main(String[] args) {

  3. System.out.println("欢迎进入青鸟游迷你戏平台 ");

  4. System.out.println("请选择您喜爱的游戏 ");

  5. System.out.println("*******************************");

  6. System.out.println("1.斗地主");

  7. System.out.println("2.斗牛");

  8. System.out.println("3.泡泡龙");

  9. System.out.println("4.连连看");

  10. System.out.println("******************************* ");

  11. System.out.print("请选择,输入数字:");

  12. Scanner input = new Scanner(System.in);

  13. int selectInt = input.nextInt();

  14. while (selectInt>=5||selectInt<=0) {

  15. System.out.print("选择错误,请重新选择");

  16. selectInt = input.nextInt();

  17. }

  18. switch (selectInt) {

  19. case 1:

  20. System.out.println("你已进入斗地主房间!");

  21. break;

  22. case 2:

  23. System.out.println("你已进入斗牛房间!");

  24. break;

  25. case 3:

  26. System.out.println("你已进入泡泡龙房间!");

  27. break;

  28. case 4:

  29. System.out.println("你已进入连连看房间!");

  30. break;

  31. }

  32. }

  33. }

2 上机练习二:玩游戏并晋级

需求    

  • 用户玩游戏,每次玩5局

  • 不足5局则不能晋级。

  • 在5局游戏中,如果80%达到80分以上,为一级,如果60%达到80分以上为二级,否则不能晋级    

                            

 

思路

  • 使用循环实现玩5局游戏,使用break语句实现中途退出游戏

  • 使用多重if,根据游戏得分判断是否晋级

实现

  1. public class RiseGame {

  2. public static void main(String[] args) {

  3. System.out.println("青鸟迷你游戏平台>游戏晋级 ");

  4. Scanner input = new Scanner(System.in);

  5. int n = 1;

  6. int count=0;

  7. while (n<=5) {

  8. System.out.print("您正在玩第"+n+"局,成绩为:");

  9. int scroe = input.nextInt();

  10. if(scroe>80){

  11. count++;

  12. }

  13. if(n!=5){

  14. System.out.println("继续玩下一局吗?(yes/no)");

  15. String answer = input.next();

  16. if(answer.equals("no")){

  17. System.out.println("你已经退出游戏");

  18. break;

  19. }

  20. System.out.println("你进入一下局");

  21. }

  22. n++;

  23. }

  24. System.out.println("n的值:"+n);

  25. if(n>5){

  26. if(n>=4){

  27. System.out.println(" 恭喜,通过一级!");

  28. }else if(n>=3&&n<4){

  29. System.out.println(" 恭喜,通过二级!");

  30. }else {

  31. System.out.println(" 对不起,你未能晋级!");

  32. }

  33. }

  34. }

  35. }

3 上机练习三:玩游戏并支付游戏币

需求:

  • 根据游戏类型和游戏时长计算应支付的游戏币

  • 游戏类型分为两大类:牌类和休闲竞技类

  • 游戏的收费标准

    • 牌类:10元/小时

    • 休闲竞技类:20元/小时

  • 游戏的收费规则:游戏时间超过10小时,可以打5折10小时及以下,打8折

实现

  1. public class PayGame {

  2. public static void main(String[] args) {

  3. System.out.println("青鸟迷你游戏平台 > 游戏币支付 ");

  4. System.out.println("请选择您玩的游戏类型:");

  5. System.out.println(" 1.牌类");

  6. System.out.println(" 2.休闲竞技类");

  7. Scanner input = new Scanner(System.in);

  8. int choice = input.nextInt();

  9. System.out.println("请您输入游戏时长:");

  10. int time = input.nextInt();  //游戏时间

  11. int qm = 0;  //游戏币

  12. switch (choice) {

  13. case 1:

  14. if (time > 10) {

  15. System.out.println("您玩的是牌类游戏,时长是:" + time + "小时,可以享受5折优惠");

  16. qm = (int) (10 * time * 0.5);

  17. System.out.println("您需要支付" + qm + "个游戏币");

  18. } else {

  19. System.out.println("您玩的是牌类游戏,时长是:" + time + "小时,可以享受8折优惠");

  20. qm = (int) (10 * time * 0.8);

  21. System.out.println("您需要支付" + qm + "个游戏币");

  22. }

  23. break;

  24. case 2:

  25. if (time > 10) {

  26. System.out.println("您玩的是休闲竞技类游戏,时长是:" + time + "小时,可以享受5折优惠");

  27. qm = (int) (20 * time * 0.5);

  28. System.out.println("您需要支付" + qm + "个游戏币");

  29. } else {

  30. System.out.println("您玩的是休闲竞技类游戏,时长是:" + time + "小时,可以享受8折优惠");

  31. qm = (int) (20 * time * 0.8);

  32. System.out.println("您需要支付" + qm + "个游戏币");

  33. }

  34. break;

  35. default:

  36. System.out.print("无效选择");

  37. }

  38. }

  39. }

4 上机练习四:统计游戏点击率

需求    

  • 录入游戏的点击率,统计点击率超过100的游戏所占的比例

思路:

  • 使用if结构、continue语句统计点击率100以上的游戏数量

实现

  1. public class GameDot {

  2. public static void main(String[] args) {

  3. int score; // 点击率

  4.        int total; // 游戏总数量

  5.        int num = 0; //点击率大于100的游戏数量

  6.        Scanner input = new Scanner(System.in);

  7.        System.out.println("青鸟迷你游戏平台 > 游戏点击率 ");

  8.        for (int i = 0; i < 4; i++) {

  9.            System.out.print("请输入第" + (i + 1) + "个游戏的点击率: ");

  10.            score = input.nextInt();

  11.            if (score <= 100) {

  12.                continue;

  13.            }

  14.            num++;

  15.        }        

  16.        System.out.println("点击率大于100的游戏数是: " + num);

  17.        double rate =  (double)num / 4 * 100;

  18.        System.out.println("点击率大于100的游戏所占的比例为:" + rate + "%");        

  19. }

  20. }

4 上机练习五:添加用户信息

需求

  • 为了维护用户信息,需要将其信息录入系统

    • 用户的信息包括:用户编号、年龄、积分

    • 要求年龄10岁以上

    • 若年龄合法,则显示录入的信息,否则显示录入失败

        

实现

  1. public class AddUser {
  2. public static void main(String[] args) {
  3. System.out.println("青鸟迷你游戏平台 > 添加用户信息 ");
  4. int custNo = 0;    //用户编号
  5. int age; //年龄
  6. int points = 0; //积分
  7. System.out.println("请输入要录入用户的数量:");
  8. Scanner input = new Scanner(System.in);
  9. int count=input.nextInt();
  10. //循环录入用户信息
  11. for(int i=0;i<count;i++){
  12. System.out.print("请输入用户编号(<4位整数>):");
  13. custNo = input.nextInt();
  14. System.out.print("请输入用户年龄:");
  15. age = input.nextInt();
  16. if(age<10 || age>100){ //年龄不合适则跳出
  17. System.out.println("很抱歉,您的年龄不适宜玩游戏");
  18. System.out.println("录入信息失败 ");
  19. continue;
  20. }
  21. System.out.print("请输入会员积分:");
  22. points = input.nextInt();
  23. System.out.println("您录入的会员信息是:");
  24. System.out.println("用户编号:"+custNo+ " 年龄:" +age+ " 积分:" +points+ " ");
  25. }
  26. }
  27. }

四、本章总结

  • 分支结构、循环结构、跳转语句的综合运用 

五、作业

1 编写JAVA程序,实现接收用户输入的正整数,输出该数的阶乘

  • 要求:限制输入的数据在1-10之间,无效数据进行提示,结束程序

  • 输出结果如:4!=1*2*3*4=24

  • 实现

  1. public class FactDemo {


  2. /**

  3. * @param args
  4. */
  5. public static void main(String[] args) {
  6. //定义变量接收用户输入,计算阶乘,累计表达式
  7. int number,fact=1;
  8. String msg="";
  9. Scanner input=new Scanner(System.in);
  10. //提醒输入
  11. System.out.println("请输入一个10以内的正整数:");
  12. number=input.nextInt();
  13. //验证有效性
  14. if(number>10 || number<1){
  15. System.out.println("数据无效");
  16. return;
  17. }
  18. System.out.print(number+"!=");
  19. //计算阶乘
  20. for(int i=1;i<number;i++){
  21. msg+=i+"*";
  22. fact*=i;
  23. }
  24. //组合结果,并显示
  25. fact*=number;
  26. msg+=number+"="+fact;
  27. System.out.println(msg);
  28. }
  29. }

2 写JAVA程序,实现输出1--100之间所有不能被7整除的数,并求和

  • 要求:每输出4个数据换行显示

  • 实现

  1. public class NumDemo {
  2. /**
  3. * @param args
  4. */
  5. public static void main(String[] args) {
  6. //定义变量,累计求和,统计个数
  7. int sum=0,count=1;
  8. System.out.println("1-100之间不能被7整除的数据为:");
  9. for(int i=1;i<=100;i++){
  10. //判断是否能被7整除,如果能被7整除,结束本次循环
  11. if(i%7==0)
  12. continue;
  13. //输出不能被7整除的数据
  14. System.out.print(i+" ");
  15. //每4个数换行显示
  16. if(count%4==0)
  17. System.out.println();
  18. //累计求和,个数增加
  19. sum+=i;
  20. count++;
  21. }
  22. System.out.println();
  23. //输出累计和
  24. System.out.println("数据之和为:"+sum);
  25. }
  26. }










原文地址:https://www.cnblogs.com/imentors/p/4672586.html