Java基础学习之练习题-----史上最详细

本文介绍了Java中用于循环控制的关键字break, continue和return的使用。通过示例展示了它们在switch语句、循环中的功能,如在九九乘法表、循环打印图案等场景中的应用。同时,文章还分析了一个经济问题,模拟了小芳存钱的过程,演示了如何在满足特定条件时调整循环行为。

循环控制练习


前面我们已经说过了,Java中的goto是保留字,目前不能使用。
虽然没有goto语句可以增强程序的安全性,但是也带来很多不便,
比如说,我想在某个循环知道到某一步的时候就结束,现在就做不了这件事情。
为了弥补这个缺陷,
Java就提供了break,continue和return来实现控制语句的跳转和中断。

break,continue,return  它们都是关键字

break: 中断,结束的意思

break的使用场景:
根据单独使用的时候报错信息我们得出,break语句是适用于switch语句和循环语句中
    1、在switch语句中使用
    2、在循环语句中使用
    3、单独在if语句中不能使用
import java.util.Scanner;
public class ControlDemo1 {
    public static void main(String[] args) {
        //单独使用是没有任何意义的
//        break;

        //需求1:输入1-7,输出对应的星期
        //创建键盘录入对象
        Scanner sc = new Scanner(System.in);
        boolean flag = true;
        while (flag) {
            System.out.println("请输入您想知道星期几的数字:(1-7)");
            int num = sc.nextInt();
            switch (num) {
                case 1:
                    System.out.println("星期一");
                    break;
                case 2:
                    System.out.println("星期二");
                    break;
                case 3:
                    System.out.println("星期三");
                    break;
                case 4:
                    System.out.println("星期四");
                    break;
                case 5:
                    System.out.println("星期五");
                    break;
                case 6:
                    System.out.println("星期六");
                    break;
                case 7:
                    System.out.println("星期日");
                    break;
                case 0:
                    flag = false;
                    System.out.println("欢迎下次使用");
                    break;
                default:
                    System.out.println("您输入的数据有误,请重新输入");
                    break;
            }
        }

        System.out.println("=======================");
        //需求2:循环打印1-10,加入break,让它在打印3的时候,结束for循环
        for(int i=1;i<=10;i++){
            System.out.println(i);
            //当打印3的时候,结束for循环
            if(i==3){
                break;
            }

        }

//        int a = 10;
//        if(a==10){
//            break;
//        }




    }
}

报错修改快捷键:将鼠标光标移动至报错的横线上,按下alt+enter

需求:
    九九乘法表,在内循环j是4的时候,我们break一下

注意事项:
    单层跳出:在当前for循环中使用break,只结束当前for循环
    多层跳出:带标签的break,格式:标签名 : 循环语句(开发中如果没有特殊需求,一般不会去使用)
public class ControlDemo2 {
    public static void main(String[] args) {

        System.out.println("========九九乘法表===========");
//        for(int i=1;i<=9;i++){
//            for(int j = 1;j<=i-1;j++){
//                System.out.print("\t");
//                System.out.print("\t");
//            }
//
//            for(int j=i;j==i;j++){
//                System.out.print(j+"*"+i+"="+(i*j)+"\t");
//            }
//            System.out.println();
//        }

        //在内循环j是4的时候,我们break一下
        xiaomi : for(int i=1;i<=9;i++){ //外层控制行
            xiaoyun : for(int j=1;j<=i;j++){ //内层控制列
                System.out.print(j+"*"+i+"="+(i*j)+"\t");
                if(j==4){
                    break xiaomi; //结束当前循环
                }
            }
            System.out.println();
        }


    }
}

    continue: 跳出当次循环

    使用场景:
        1、在循环语句中
        2、离开使用场景的存在是没有意义的

    return: 返回,退还
        在main方法中使用,就相当于结束了main方法,也就是结束当前java程序
public class ControlDemo3 {
    public static void main(String[] args) {
        //单独使用报错,根据报错信息我们发现,continue只能在循环中使用
//        continue;
        //需求:打印1-10,加入continue关键字,在打印3的时候加入
        System.out.println("=====加continue==============");
        for(int i=1;i<=10;i++){
            if(i==3){
                continue;
            }
            System.out.println(i);
        }


        System.out.println("=====加break==============");
        for(int i=1;i<=10;i++){
            if(i==3){
                break;
            }
            System.out.println(i);
        }
        System.out.println("=====加入return===============");

        for(int i=1;i<=10;i++){
            if(i==3){
                return;
            }
            System.out.println(i);
        }

        //可以单独使用
//        return;

        System.out.println("你好呀 大家");




    }
}

小芳的妈妈每天给她2.5元钱,她都会存起来,但是,
每当这一天是存钱的第5天或者5的倍数的话,她都会花去6元钱,
请问,经过多少天,小芳才可以存到100元钱。

分析
    1、由于存钱是每天都会发生的事,所以我们考虑循环
        我们学过的循环有for循环和while循环
        这里由于不知道存多少天,我们推荐使用while循环
    2、存的钱的总额
       统计天数
public class ControlTest {
    public static void main(String[] args) {
        //定义两个变量分别代表金额和天数
        double money = 0;
        int day = 0;

        while (money <= 100) {
            day = day + 1;
            money = money + 2.5;

            //当day是5或者是5的倍数的时候,money-6
            if (day % 5 == 0) {
                money = money - 6;
            }
            System.out.println("第" + day + "天,已经存到了" + money + "元");
        }
        System.out.println("=================================");

        System.out.println("第" + day + "天的时候,存到了" + money + "元");


    }
}

     需求1:请输出一个4行5列的星星(*)图案

     * * * * *
     * * * * *
     * * * * *
     * * * * *

     需求2:  用循环实现打印如下三角形的*图案
*
*   *
*   *   *
*   *   *   *
*   *   *   *   *
public class ForNestDemo {
    public static void main(String[] args) {
        //输出一个*
//        System.out.println("*");

        //输出5个*
//        System.out.println("*");
//        System.out.println("*");
//        System.out.println("*");
//        System.out.println("*");
//        System.out.println("*");

        //使用java的输出语句另外一种格式,将5个*输出在一行
//        System.out.print("*\t");
//        System.out.print("*\t");
//        System.out.print("*\t");
//        System.out.print("*\t");
//        System.out.print("*\t");

        //for循环改进打印一行
//        for(int i=1;i<=5;i++){
//            System.out.print("*\t");
//        }
//        System.out.println();
//
//        for(int i=1;i<=5;i++){
//            System.out.print("*\t");
//        }
//        System.out.println();
//
//        for(int i=1;i<=5;i++){
//            System.out.print("*\t");
//        }
//        System.out.println();
//
//        for(int i=1;i<=5;i++){
//            System.out.print("*\t");
//        }
//        System.out.println();


        //用for循环改进打印4行5列的*
        for (int i = 1; i <= 4; i++) { // 外层的for循环控制的是行
            for (int j = 1; j <= 5; j++) {//内层的for循环控制的是列
                System.out.print("*\t");
            }
            System.out.println();
        }

        System.out.println("===========需求2====================");
        /**
         *
         *
         *          *
         * 			*   *
         * 			*   *   *
         * 			*   *   *   *
         * 			*   *   *   *   *
         *
         * 	分析:
         * 	    1、总共有5行5列,我们可以先打印5行5列
         * 	    *   *   *   *   *
         * 	    *   *   *   *   *
         * 	    *   *   *   *   *
         * 	    *   *   *   *   *
         * 	    *   *   *   *   *
         *
         * 	    2、
         *
         * 	    *                    第一行1个星,i=1,j=1
         *      *   *                第二行2个星,i=2,j=2
         *      *   *   *            第三行3个星,i=3,j=3
         *      *   *   *   *        第四行4个星,i=4,j=4
         *      *   *   *   *   *    第五行5个星,i=5,j=5
         *
         *
         */
        for (int i = 1; i <= 5; i++) {
            for (int j = 1; j <= 5; j++) {
                System.out.print("*\t");
            }
            System.out.println();
        }
        System.out.println("==================================");

        for (int i = 1; i <= 5; i++) {
            for (int j = 1; j <= i; j++) {
                System.out.print("*\t");
            }
            System.out.println();
        }

        System.out.println("===========打印9行9列的*三角型===========");
        for (int i = 1; i <= 9; i++) {
            for (int j = 1; j <= i; j++) {
                System.out.print("*\t");
            }
            System.out.println();
        }

        System.out.println("===========打印九九乘法表===========");
        for (int i = 1; i <= 9; i++) {
            for (int j = 1; j <= i; j++) {
                //1*1=1   1*2=2
                System.out.print(j + "*" + i + "=" + (i * j) + "\t");
            }
            System.out.println();
        }


    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

创作者mateo

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

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

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

打赏作者

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

抵扣说明:

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

余额充值