Java选择与循环结构练习(2)

目录

练习1:根据输入数字显示对应的英文星期名称缩写

练习2:输出一批整数中的最大值和最小值

练习3:设计Java程序,假设有50瓶饮料,喝完3个空瓶可以换一瓶饮料,依次类推,请问总共喝了多少瓶饮料?

练习4:用100元人民币兑换10元,5元,1元的纸币(每种都要有),计算有多少种兑换方案

练习5:生成13位条形码 Ean-13码规则:第十三位数字是前十二位数字经过计算得到的校验码。 例如:690123456789

练习6:开发一个标题为“FlipFlop”的游戏应用程序。

练习7:李白无事街上走,提壶去买酒。遇店加一倍,见花喝一斗,五遇花和店,喝光壶中酒,试问李白壶中原有多少斗酒?(使用for循环结构编程实现) 提示:采用逆向思维分析问题。

练习8:求100到1000之间的所有能被5和6整除的整数,每行显示5个

练习9:随机产生一个字符,判断:如果为大写字母则输出“大写字母”;如果为小写字母则输出“小写字母”;否则则输出“其他字符”;     *         a-z:97~122      *         A~Z:65~90

练习10:实现双色球的彩票功能。规则:从33个红球中随机选择不重复的6个数,从16个蓝球中随机选择1个组成一注彩票。可以选择买多注。


练习1:根据输入数字显示对应的英文星期名称缩写

要求:用键盘输入一位整数,当输入1~7时,显示对应的英文星期名称的缩写。1表示MON,2表示TUE,3表示WED,4表示THU,5表示FRI,6表示SAT,7表示SUN; 输入其他数字时提示用户重新输入,输入数字0时程序结束。

public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String day = "";
        System.out.print("请输入数字1-7(输入0结束):");
        int num = sc.nextInt();
        while(num != 0){
            if(num >= 1 && num <= 7){    //数字合法
                switch(num){
                case 1:
                    day = "MON";
                    break;
                case 2:
                    day = "TUE";
                    break;
                case 3:
                    day = "WED";
                    break;
                case 4:
                    day = "THU";
                    break;
                case 5:
                    day = "FRI";
                    break;
                case 6:
                    day = "SAT";
                    break;
                case 7:
                    day = "SUN";
                    break;
                }
                System.out.println("今天是  " + day);
                System.out.print("请输入数字1-7(输入0结束):");
                num = sc.nextInt();
            }else{    //数字非法
                System.out.print("输入的数字非法,请重新输入:");
                num = sc.nextInt();
            }
        }
        System.out.println("程序结束!");
        
        sc.close();
    }

练习2:输出一批整数中的最大值和最小值

要求:输入一批整数,输出其中的最大值和最小值,输入数字0时结束循环。

public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.print("请输入一个整数(输入0结束):");
        int num = sc.nextInt();
        int max = num; // 记录最大值
        int min = num; // 记录最小值
        while (num != 0) {
            if (num > max) {
                max = num;
            } else if (num < min) {
                min = num;
            }
            System.out.print("请输入一个整数(输入0结束):");
            num = sc.nextInt();
        }
        System.out.println("最大值是:" + max + " 最小值是:" + min);

        sc.close();
    }

练习3:设计Java程序,假设有50瓶饮料,喝完3个空瓶可以换一瓶饮料,依次类推,请问总共喝了多少瓶饮料?

public static void main(String[] args) {
        int drink = 50; // 饮料总数
        int count = 0; // 兑换次数
        while (true) {
            drink -= 3; // 喝3瓶
            drink++; // 兑换1瓶
            count++; // 兑换次数+1
            if (drink < 3) {
                System.out.println("共喝了" + (50 + count) + "瓶");
                break;
            }
        }

    }

练习4:用100元人民币兑换10元,5元,1元的纸币(每种都要有),计算有多少种兑换方案

public static void main(String[] args) {
        int yiYuan = 1;
        int wuYuan = 5;
        int shiYuan = 10;
        int count = 0;
        for (int i = 1; i <= 100; i++) {
            for (int j = 1; j <= 20; j++) {
                for (int k = 1; k <= 10; k++) {
                    if (i * yiYuan + j * wuYuan + k * shiYuan == 100) {
                        count++;
                        System.out.println(i + "张1元," + j + "张5元," + k + "张10元");
                    }
                }
            }
        }

        System.out.println("一共有" + count + "种兑换方法");
    }

练习5:生成13位条形码 Ean-13码规则:第十三位数字是前十二位数字经过计算得到的校验码。 例如:690123456789

计算其校验码的过程为:
              @前十二位的奇数位和6+0+2+4+6+8=26
              @前十二位的偶数位和9+1+3+5+7+9=34
              @将奇数和与偶数和的三倍相加26+34*3=128
              @取结果的个位数:128的个位数为8
              @用10减去这个个位数10-8=2 所以校验码为2 
             (注:如果取结果的个位数为0,那么校验码不是为10(10-0=10),而是0)
              实现方法ean13()计算验证码,输入12位条码,返回带验证码的条码。 
              例:输入:692223361219输出:6922233612192

public static void main(String[] args) {
        StringBuffer code;
        int check;
        System.out.print("请输入Ean-13条形码的前十二位:");
        Scanner sc = new Scanner(System.in);
        code =new StringBuffer(sc.nextLine());
        check = ean13(code);
        //在条码后面追加验证码
        code.append(check);
        System.out.println("正确的条形码是:"+code);
        sc.close();
   }
    
   public static int ean13(StringBuffer code){
        int c1=0;
        int c2=0;
        int sum=0;
        int check;
        for(int i=0;i<12;i+=2){
            //奇数位数字求和
             c1+=(code.charAt(i)-'0');//数字字符-数字字符=整数
             //偶数位数字求和
             c2+=(code.charAt(i+1)-'0');
        }
        sum=c1+c2*3;
        check=(10-sum%10)%10;
        return check;
   }

练习6:开发一个标题为“FlipFlop”的游戏应用程序。

它从1计数到100,遇到3的倍数就替换为单词“Flip”,5的倍数就替换为单词“Flop”, 既为3的倍数又为5的倍数则替换为单词“FlipFlop”。 

public static void main(String[] args) {
        for (int i = 1; i <= 100; i++) {
            if (i % 3 == 0 & i % 5 == 0) {
                System.out.println("FlipFlop");
            } else if (i % 3 == 0) {
                System.out.println("Flip");
            } else if (i % 5 == 0) {
                System.out.println("Flop");
            } else {
                System.out.println(i);
            }
        }

    }

练习7:李白无事街上走,提壶去买酒。遇店加一倍,见花喝一斗,五遇花和店,喝光壶中酒,试问李白壶中原有多少斗酒?(使用for循环结构编程实现) 提示:采用逆向思维分析问题。

public static void main(String[] args) {
        //壶里的酒
        double alcohol = 0;
        
        for(int i =0;i<5;i++){
            alcohol+=1;
            alcohol/=2;
        }

        System.out.println("李白壶中原有"+alcohol+"斗酒");
    }

练习8:求100到1000之间的所有能被5和6整除的整数,每行显示5个

public static void main(String[] args) {
        // 定义一个变量用来统计100到1000之间能被5和6整除的整数的个数
        int count = 0;
        for (int i = 100; i <= 1000; i++) {
            // 判断i能不能被5和6整除
            if (i % 5 == 0 && i % 6 == 0) {
                // 如果i能被5和6整除,就输出这个数,不换行
                System.out.print(i + " ");
                // 每输出一个能被5和6整除的数,count+1
                count++;
                // 如果count值能被5整除,说明这一行已经输出了5个能被5和6整数的数,要换行
                if (count % 5 == 0) {
                    System.out.println();
                }
            }

        }

    }

练习9:随机产生一个字符,判断:如果为大写字母则输出“大写字母”;如果为小写字母则输出“小写字母”;否则则输出“其他字符”;
     *         a-z:97~122 
     *         A~Z:65~90

public static void main(String[] args) {
        int num = (int) (Math.random() * 58 + 65);
        if (num >= 65 && num <= 90) {
            System.out.println("大写字母");
            System.out.println((char) num);
        } else if(num>=97&&num<=122) {
            System.out.println("小写字母");
            System.out.println((char) num);
        }else{
            System.out.println("其他字符");
            System.out.println((char) num);
        }
    }

练习10:实现双色球的彩票功能。规则:从33个红球中随机选择不重复的6个数,从16个蓝球中随机选择1个组成一注彩票。可以选择买多注。

     

public static void main(String[] args) {
        //创建Scanner类对象,用来获取从键盘输入的数据
        Scanner sc = new Scanner(System.in);
        
        System.out.println("输入你要购买的彩票注数:");
        int num = sc.nextInt();

        for (int i = 1; i <= num; i++) {
            //随机获取一个[num1,num2)之间的int类型的数(num2>num1):(int)(Math.random()*(num2-num1)+num1);
            
            // 输出蓝球,蓝球只需要一个[1,17)
            int blueBall = (int) (Math.random() * 16 + 1);
            // 输出红球,红球需要6个[1,34)
            int redBall1 = (int) (Math.random() * 33 + 1);
            int redBall2 = 0;
            int redBall3 = 0;
            int redBall4 = 0;
            int redBall5 = 0;
            int redBall6 = 0;
            while (true) {
                int redBall = (int) (Math.random() * 33) + 1;
                if (redBall6 != 0) {// redBall6不等于0说明redBall6已经获得值了
                    break;// redBall6获得值了就退出循环
                }
                if (redBall != redBall1 && redBall2 == 0) {
                    redBall2 = redBall;
                } else if (redBall != redBall1 && redBall != redBall2
                        && redBall3 == 0) {
                    redBall3 = redBall;
                } else if (redBall != redBall1 && redBall != redBall2
                        && redBall != redBall3 && redBall4 == 0) {
                    redBall4 = redBall;
                } else if (redBall != redBall1 && redBall != redBall2
                        && redBall != redBall3 && redBall != redBall4
                        && redBall5 == 0) {
                    redBall5 = redBall;
                } else if (redBall != redBall1 && redBall != redBall2
                        && redBall != redBall3 && redBall != redBall4
                        && redBall != redBall5 && redBall6 == 0) {
                    redBall6 = redBall;
                }
            }

            System.out.println(redBall1 + " " + redBall2 + " " + redBall3 + " "
                    + redBall4 + " " + redBall5 + " " + redBall6 + "---"
                    + blueBall);
        }

        sc.close();

    }

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: educoderjava入门循环结构是指在Java编程语言中,使用循环结构实现重复执行某段代码的功能。循环结构包括for循环、while循环和do-while循环,它们可以帮助我们简化代码,提高效率。在Java编程中,循环结构是非常重要的基础知识,需要认真学习和掌握。 ### 回答2: educoderjava入门循环结构是教学平台educoder上的一门课程,旨在帮助初学者学习和掌握Java编程语言中的循环结构。 在Java编程语言中,循环结构是一种重要的程序控制结构,用于重复执行某段代码,直到满足某个条件时停止。educoderjava入门循环结构课程主要包括以下几个知识点: 1. for循环:for循环是最常用的一种循环结构,它通过设置循环变量的初始值、循环条件和每次循环后的操作,来控制循环的执行次数。 2. while循环:while循环会先判断循环条件是否满足,如果满足则执行循环体内的代码,然后再次判断条件,直到条件不满足时停止循环。 3. do-while循环:do-while循环先执行一次循环体内的代码,然后再判断循环条件是否满足,如果满足则继续执行循环体内的代码,直到条件不满足时停止循环。 通过完成educoderjava入门循环结构课程中的练习和题目,学习者可以掌握循环结构的基本概念、语法和使用方法,并能够灵活运用循环结构解决实际问题。 总之,educoderjava入门循环结构课程是一门帮助初学者学习和掌握Java编程语言循环结构的课程,通过完成练习和题目,学习者可以提高自己的编程能力。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

豪仔思密达

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值