Java三大流程控制语句之for循环及变形记

雨霖先森 2022-09-23 22:06:24

Java三大流程控制语句之for循环及变形记

一、for循环

应用场景:重复性的工作

1.语法结构:

        for(初始化变量;判断条件;更新变量){
            ...代码块/循环体...
        }

2.基本使用

1.初始化变量 2.判断条件 -- 必须是boolean值 true -- 执行代码块 -> 更新变量 -> 重复第2个步骤 false - 跳出整个循环语句

3.深入使用

1.打印5遍"努力学习,天天向上"

public class 文件名{
    public static void main(String[] args){
            for(int i = 1;i<=5;i++){
                System.out.println("努力学习,天天向上");
            }
    }
}

2.打印0~10的数字

public class 文件名{
    public static void main(String[] args){
            for(int i = 0;i<=10;i++){
                System.out.println(i);
            }
    }
}

3.打印0~10之内的偶数

public class 文件名{
    public static void main(String[] args){
            //解决方案1:
            for(int i = 0;i<=10;i++){
                if(i % 2 ==0 ){
                    System.out.println(i);
                }
            }
            /**解决方案2:
            for(int i = 0;i<=10;i+=2){
                System.out.println(i);  
            }
            */
    }
}

4.打印10~0的数字

public class 文件名{
    public static void main(String[] args){
            for(int i = 10;i>=0;i--){
                System.out.println(i);
            }
        
    }
}

5.打印10~0之内的奇数

public class 文件名{
    public static void main(String[] args){
            //解决方案1:
            for(int i = 10;i>=0;i--){
                if(i % 2 != 0){
                    System.out.println(i);
                }
            }
            /**解决方案2:
            for(int i = 9;i>=0;i-=2){
                System.out.println(i);
            }
            */
    }
}

4.小结:

初始变量不一定从1开始

更新变量不一定++,也可以--,还可以+=、-=

二、死循环

public class 文件名{
    public static void main(String[] args){
            for(;;){
                System.out.println("死循环");
            }
    }
}

三、伪死循环

public class 文件名{
    public static void main(String[] args){
            for(int i = 10;i>0;i++){//考虑int的取值范围:达到最大值再++就变成负数了
                System.out.println("伪死循环");
            }   
    }
}

四、for循环变形记

1.基本使用

public class 文件名{
    public static void main(String[] args){
            int i = 0;
            for(;i<5;){
                System.out.println(i);
                
                //i++;和++i;没有区别(因为分号为执行语句的结束,不管先加还是后加都给我加)
                //i++;
                ++i;
            }
            
            System.out.println("i = " + i); 
    }
}

2.深入使用

1.循环录入5次int类型的数字,输出总和

import java.util.Scanner;
public class 文件名{
    public static void main(String[] args){
            Scanner scan = new Scanner(System.in);
            int sum = 0;
            for(int i = 1;i<=5;i++){
                System.out.println("请输入第" + i + "个数字:");
                int num = scan.nextInt();
                
                sum += num;//累加总和
            }
            
            System.out.println("总和为:" + sum);
    }
}

2.循环录入5门课成绩,计算平均分

import java.util.Scanner;
public class 文件名{
    public static void main(String[] args){
            Scanner scan = new Scanner(System.in);
            double sum = 0;
            for(int i = 1;i<=5;i++){
                System.out.println("请输入第" + i + "门成绩:");
                double score = scan.nextDouble();
                sum += score;//累加总和
            }
            System.out.println("平均分为:" + (sum/5));
    }
}

3.循环录入5次int类型的数字,输出最大值

import java.util.Scanner;
public class 文件名{
    public static void main(String[] args){
            Scanner scan = new Scanner(System.in);
            //假设输入的第一个数字为最大值
            System.out.println("请输入第1个数字:");
            int max = scan.nextInt();
            for(int i = 2;i<=5;i++){
                System.out.println("请输入第" + i + "个数字:");
                int num = scan.nextInt();
                if(max < num){
                    max = num;
                }
            }   
            System.out.println("最大值为:" + max);
    }
}

五、for循环嵌套

需求1:打印下列图形3*4矩形

        ****
        ****
        ****
public class 文件名{
    public static void main(String[] args){
            for(int i = 0;i<3;i++){//控制行数
            
    //方案一:System.out.println("****");//输出+换行
            //方案二:  
                for(int j = 0;j<4;j++){//控制列数
                    System.out.print("*");
                }
                
                System.out.println();//换行
            }
    }
}

需求2:打印下列图形靠左直角三角形

        *       i = 0
        **      i = 1
        ***     i = 2
        ****    i = 3
        *****   i = 4
public class 文件名{
    public static void main(String[] args){
            for(int i = 0;i<5;i++){
            
                for(int j = 0;j<=i;j++){
                    System.out.print("*");
                }
                
                System.out.println();
            }
    }
}

需求3:打印下列图形倒靠左直角三角形

        *****
        ****
        ***
        **
        *
public class 文件名{
    public static void main(String[] args){
            for(int i = 0;i<5;i++){//i = 0
                for(int j = 0;j<5-i;j++){
                    System.out.print("*");
                }       
                System.out.println();
            }   
    }
}

需求4:打印下列图形倒靠右直角三角形

        *****
         ****
          ***
           **
            *
public class 文件名{
    public static void main(String[] args){
                for(int i = 0;i<5;i++){
                for(int k = 0;k<i;k++){
                    System.out.print(" ");
                }
                for(int j = 0;j<5-i;j++){
                    System.out.print("*");
                }
                System.out.println();
            }
    }
}

需求5:打印下列图形三角形

           *
          ***
         *****
        *******
public class 文件名{
    public static void main(String[] args){
            for(int i = 0;i<4;i++){ 
            for(int k = 0;k<3-i;k++){
                    System.out.print(" ");
                }   
                for(int j = 0;j<i*2+1;j++){
                    System.out.print("*");
                }
                System.out.println();
            }
    }
}

需求6:打印下列图形倒三角形

        *******
         *****
          ***
           *
public class 文件名{
    public static void main(String[] args){
            for(int i = 0;i<4;i++){         
                for(int k = 0;k<i;k++){
                    System.out.print(" ");
                }       
                for(int j = 0;j<7-i*2;j++){
                    System.out.print("*");
                }       
                System.out.println();
            }             
    }
}

需求7:打印下列图形空心三角形

           *
          * *
         *   *
        *******
public class 文件名{
    public static void main(String[] args){
            for(int i = 0;i<4;i++){
                for(int k = 0;k<3-i;k++){
                    System.out.print(" ");
                }
                for(int j = 0;j<i*2+1;j++){         
        //第一行 或 最后一行 或 每行的第一列 或 每行的最后一列
                    if(i==0 || i==3 || j==0 || j==i*2){
                        System.out.print("*");
                    }else{
                        System.out.print(" ");
                    }   
                }
                System.out.println();
            }         
    }
}

需求8:打印下列图形倒空心三角形

        *******
         *   *
          * *
           *
public class 文件名{
        public static void main(String[] args){
            for(int i = 0;i<4;i++){     
                for(int k = 0;k<i;k++){
                    System.out.print(" ");
                }   
                for(int j = 0;j<7-i*2;j++){
        //第一行 或 最后一行 或 每行的第一列 或 每行的最后一列
                if(i==0 || i==3 || j==0 || j==7-i*2-1){
                        System.out.print("*");
                    }else{
                        System.out.print(" ");
                    }
                }   
                System.out.println();
            }             
    }
}

需求9:打印九九乘法表

public class 文件名{
        public static void main(String[] args){
            /**方式1:
            for(int i = 1;i<=9;i++){
            for(int j = 1;j<=i;j++){
    System.out.print(j + "x" + i + "=" + (i*j) + "\t");
                }
                System.out.println();
            }
        */
        方式2:
            for(int i = 1;i<=9;i++){
                for(int k = 1;k<i;k++){
                    System.out.print("\t");
                }
                for(int j = i;j<=9;j++){
    System.out.print(i + "x" + j + "=" + (i*j) + "\t");
                }
                System.out.println();
            }         
    }
}

 

...全文
66 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

51,407

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧