双重循环及break,continue,return的运用

183 阅读1分钟

双重循环的运用场景

在控制台输出5行5列*

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

方式一:每行输出*****,输出5次

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

方式二:方式一可以通过循环来实现

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

方式三:方式二中的{}里的代码表示在一行输出5个*,这个需求也可以通过循环来实现

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

    }

}

外层循环变量变化1次,内层循环变量变化1遍(内层循环是外层循环的循环操作,一定要等循环操作执行完之后,外层循环变量才进行迭代)
外层循环变量可以控制行数,内层循环变量控制每一行的列数
练习1:输出一下图片格式:

package cn.bdqn.demo01;

public class Demo03 {

    public static void main(String[] args) {
        
        //外层循环控制行数
        for(int i =1;i<=7;i++){
            //在输出每一行*之前,要输出空格“ ”,通过分析发现,每一行*前面的空格数量不一样的
            for(int k =1;k<=7-i;k++){
                System.out.print(" ");
            }
            
            
            //输出*,每一行的*数量一样,都是7个
            //内层循环控制每一行*的数量
            for(int j =1;j<=6;j++){
                System.out.print("*");
            }
            //输出完每一行*后要换行
            System.out.println();
        }

    }

}

练习2:使用双重for循环输出九九乘法表,外层循环控制行数,九九乘法表,一共有9行

package cn.bdqn.demo02;

public class Demo01 {

    public static void main(String[] args) {
        //使用双重for循环输出九九乘法表
        //外层循环控制行数,九九乘法表,一共有9行
        for(int i =1;i<=9;i++){
            //内层循环控制每一行的列数,九九乘法表每一行的列数与行号相同
            for(int j =1;j<=i;j++){
                System.out.print(j+"×"+i+"="+(i*j)+"\t");
            }
            //输出每一行的乘式后换行
            System.out.println();
        }
            
    }

}

break

作用场景:switch选择结构和循环结构中

作用:结束整个switch选择结构或循环结构
注意:break在循环结构中使用,一般结合if判断语句一起使用,因为结束循环需要一个原因
break不能被使用在循环或者switch结构外
练习3:循环录入某学生5门课的成绩并计算平均分,如果某分数录入为负,停止录入并提示录入错误

package cn.bdqn.demo03;

import java.util.Scanner;

public class Demo02 {

    public static void main(String[] args) {
        //循环录入某学生5门课的成绩并计算平均分,如果某分数录入为负,停止录入并提示录入错误

        Scanner sc = new Scanner(System.in);
        System.out.println("请输入学生姓名:");
        String name = sc.next();
        
        //定义一个变量用来累加成绩
        double sum = 0;
        
        for(int i =0;i<5;i++){
            System.out.println("请输入第"+(i+1)+"门课的成绩:");
            double score =sc.nextDouble();
            if(score<0){
                System.out.println("成绩不能为负数,结束录入");
                break;
            }else{
                sum+=score;
                //如果能正确累加到第五门课的成绩,就计算平均分并输出平均分
                if(i==4){
                    double avg =sum/5;
                    System.out.println(name+"的5门课平均分为:"+avg);
                }
            }
        }
        
        
        
    }

}

练习4:1~10之间的整数相加,得到累加值大于20的当前数

package cn.bdqn.demo03;

public class Demo03 {

    public static void main(String[] args) {
        //1~10之间的整数相加,得到累加值大于20的当前数
        
        //定义一个变量用来存放累加的数字之和
        int sum = 0;
        for(int i =1;i<=10;i++){
            sum+=i;
            //每循环累加1次,就需要判断一下sum是否大于20,如果大于20,就结束累加并输出当前这个数
            if(sum>20){
                System.out.println("sum="+sum);
                System.out.println(i);
                break;
            }
        }


    }

}

continue

作用场景:continue只能作用在循环结构中

作用:遇到continue,结束当前(本次)循环continue后续操作,继续执行下一次循环操作
注意:continue一般结合if选择结构一起使用,因为结束本次循环continue后续操作要有一个原因
continue不能被使用在循环外
练习5:使用continue实现输出1-100之前所有偶数

package cn.bdqn.demo04;

public class Demo02 {

    public static void main(String[] args) {
        //使用continue实现输出1-100之前所有偶数
        
        for(int i =1;i<=100;i++){
            //在输出之前需要进行判断
            if(i%2!=0){//i%2!=0,说明这个数是奇数,就结束本次循环continue后面的输出操作,从而实现奇数不输出
                continue;
            }
            System.out.println(i);
        }

    }

}

练习6:使用continue实现求1-100之间所有偶数之和

package cn.bdqn.demo04;

public class Demo03 {

    public static void main(String[] args) {
        //使用continue实现求1-100之间所有偶数之和
        
        //定义一个变量用来存储累加数据之和
        int sum =0;
        
        for(int i =1;i<=100;i++){
            //累加之前,要进行判断,如果数是奇数,就不进行累加操作,继续执行下一次循环操作
            if(i%2!=0){
                continue;
            }
            
            sum+=i;
        }
        
        System.out.println("1-100之间所有偶数之和:"+sum);
        
    }

}

练习7:循环录入Java课的学生成绩,统计分数大于等于80分的学生比例

package cn.bdqn.demo04;

import java.util.Scanner;

public class Demo04 {

    public static void main(String[] args) {
        //循环录入Java课的学生成绩,统计分数大于等于80分的学生比例

        Scanner sc = new Scanner(System.in);
        
        System.out.println("请输入班级学生人数:");
        
        int num = sc.nextInt();
        
        //声明一个变量用来统计分数大于80分的人数
        double count = 0;
        
        //获取学生的成绩
        for(int i =1;i<=num;i++){
            System.out.println("请输入第"+i+"个学生的成绩:");
            double score =sc.nextDouble();
            //判断学生成绩是否大于80分,如果大于80分,就统计到变量count中
            if(score<80){
                continue;
            }
            
            count++;
        }
        
        //输出分数大于80分的人数
        System.out.println("分数大于80分的人数有:"+(int)count+"人");
        
        double result =count/num;
        System.out.println("80分以上学生所占比例:"+result*100+"%");

    }

}

break跳出指定循环

在多重循环中使用break跳出指定循环,可以给循环加上标记

package cn.bdqn.demo04;

public class Demo05 {

    public static void main(String[] args) {

        // 在多重循环中使用break跳出指定循环,可以给循环加上标记
        a: for (int i = 1; i <= 10; i++) {
            System.out.print(i + "-");
            b: for (int j = 10; j <= 100; j += 10) {
                System.out.print(j + " ");
                if (j == 30) {
                    break a;
                }
            }
            System.out.println();
        }

        System.out.println("----------------");

        a: for (int i = 1; i <= 10; i++) {
            System.out.print(i + "-");
            b: for (int j = 10; j <= 100; j += 10) {
                System.out.print(j + " ");
                if (j == 30) {
                    continue a;
                }
            }
            System.out.println();
        }

    }

}

return

作用场景:方法中
作用:遇到return,结束方法,如果方法有返回值,通过return将值返回给方法的调用者

//定义一个方法
    public static String test(){
        for(int i=1;i<=10;i++){
            if(i==5){
                return "方法执行完了" ;
            }
            System.out.println(i);
        }
        return null;
    }
    
    

    public static void main(String[] args) {
        int num = 10;
        System.out.println("abcdefg");
        String result =test();
        System.out.println(result);
    }

练习8:输出以下图片样式:

package cn.bdqn.demo03;

import java.util.Scanner;

public class Subject03 {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("您想要几行数字?");
        int sum = sc.nextInt();
        for(int i=1;i<=sum;i++){
            for(int j=1;j<=sum-i;j++){
                System.out.print(" ");
            }
            for(int k=1;k<=2*i-1;k++){
                System.out.print(i);
            }
            System.out.println("");
        }
    }

}

练习9:从键盘输入一位整数,当输入17时,输出“星期一”“星期日”, 输入其他数字时,提示用户重新输入

package cn.bdqn.demo03;

import java.util.Scanner;

public class Subject02 {

    public static void main(String[] args) {
        /*
         * 从键盘输入一位整数,当输入1~7时,输出“星期一”~“星期日”
         * 输入其他数字时,提示用户重新输入
         */
        Scanner sc = new Scanner(System.in);
        
        int num;
        do{
            System.out.println("请输入1~7:");
            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;
            default:System.out.print("输入错误!");
            }
        }while(num>=7||num<=1);
        
    }

}