流程控制语句二(for循环结构)

本文详细解析了for循环的基本结构及其在代码中的应用,包括循环的四要素:初始化、继续条件、循环体和步长。通过多个实例展示了如何利用for循环打印不同模式的字符图案,以及如何使用for嵌套循环来简化复杂任务。

for循环

1.介绍 当我们在代码中重复进行同一操作时,并且已知重复次数,或结束条件,我们可以使用循环结构来写,而使代码不显得过于冗余。
2.循环的四要素
1.循环初始化—指的就是循环从什么时候开始执行。
2.循环继续条件—什么情况循环继续执行/反过来说,循环何时结束。
3.循环体—就是我们需要被多次循环执行的代码块。
4.循环的周期,步长,间距–当前循环和下一次循环之间的变更
3.for循环结构****
for(1循环的初始;2循环的继续条件;4循环的步长){
3循环体;
}
4.for嵌套:
循环在for循环里在套个for循环,可以减少代码量。

for循环

  1. ********打印出
//当我们以*为循环体
class Test01{
    public static void main(String[] args){
    for(int i=1;i<=8;i++){ //一共有8个*循环8次
            System.out.print("*");//每次输出一个*并不换行
    }
}
  1.  ********
     ********
     ********      打印出
     ********
    
//当我们以********为循环体
class Test01{
    public static void main(String[] args){
    for(int i=1;i<=4;i++){
             System.out.println("********");
       }
/*
/当我们以一个(*)为循环体  for嵌套循环
 for(int line=1;line<=4;line++){   //一共四行
            for(int i=1;i<=8;i++){
                System.out.print("*");//每次打印一个*重复8次
            }
            System.out.println();//每输出8个*换行
***3
*/
}

for嵌套循环

/*** 3 打印出

        *           1
        **          2
        ***         3
        ****        4
        *****       5
        *******     6
        ********    7               
class Test03{
    public static void main(String[] args){
      for(int line=1;line<=7;line++){    //一共7行循环7次
            for(int i=1;i<=line;i++){   //每行最大数位这行的行数
                System.out.print("*");  //内for每循环一次输出*
            }
            System.out.println();   //外for每执行一次换行
        }
    }
}

  1.                  i   j
         *           1   1
         **          2   1 2
         ***         3   1 2 3
         ****        4   1 2 3 4
         *****       5   1 2 3 4 5
         ******      6   1 2 3 4 5 6
         *****       7   1 2 3 4 5 
         ****        8   1 2 3 4
         ***         9   1 2 3
         **          10  1 2
         *           11  1
         j<=i && j<=12-i
    
class Test04{
    public static void main(String[] args){
    for(int i=1;i<=11;i++){          //代表行数11行
            for(int j=1;j<=i&&j<=12-i;j++){
                System.out.print("*");
            }
            System.out.println();
        }
     }
  }   
    
  1.              k    i   j
              * -5    1   1
             ** -4    2   1 2
            *** -3    3   1 2 3
           **** -2    4   1 2 3 4
          ***** -1    5   1 2 3 4 5
         ******  0    6   1 2 3 4 5 6
          *****  1    7   1 2 3 4 5 
           ****  2    8   1 2 3 4
            ***  3    9   1 2 3
             **  4    10  1 2
              *  5    11  1
    

//k=|i-6| |k| 代表当前最大的空格数
(改进上题代码)

class Test05{
    public static void main(String[] args){
       for(int i=1;i<=11;i++){      //一共11行循环11次
            for(int k=1;k<=Math.abs(i-6);k++){    //|k|  代表当前最大的空格数
                System.out.print(" ");  //每次输出一个空格
            }
            for(int j=1;j<=i&&j<=12-i;j++){   //来限制输出的最大数
                System.out.print("*");//每次打印一个*为一个单位
            }
            System.out.println();
        }
    }
 }       
  1.                      k    i        j
              *         -5    1        1
             * *        -4    2       1 2
            * * *       -3    3      1 2 3
           * * * *      -2    4     1 2 3 4
          * * * * *     -1    5    1 2 3 4 5
         * * * * * *     0    6   1 2 3 4 5 6
          * * * * *      1    7    1 2 3 4 5 
           * * * *       2    8     1 2 3 4
            * * *        3    9      1 2 3
             * *         4    10      1 2
              *          5    11       1
    

/ /k=|i-6| |k| 代表当前最大的空格数
(改进上题代码)

class Test06{
    public static void main(String[] args){
      for(int i=1;i<=11;i++){
            for(int k=1;k<=Math.abs(i-6);k++){
                System.out.print(" ");
            }
            for(int j=1;j<=i&&j<=12-i;j++){
                System.out.print("* ");//每次打印出(一个*加一个空格)为一个单位打印出
            }
            System.out.println();
        }
     }
   }

7

打印

import java.util.Scanner;
class Text07{    
    public static void main(String[] args){           Scanner scanner=new Scanner(System.in);       
    System.out.print("请输入行数:");       
    int line=scanner.nextInt();        
    for(int i=1;i<=line;i++){           
      for(int k=1;k<=(line-i);k++){                
         if(line<10){      
            System.out.print("  ");               
         }else{              
            System.out.print("   ");              
         }       
       }         
       for(int x=-(i-1);x<=i-1;x++){               
           if(line<10){              
               System.out.printf("%-2d",Math.abs(x)+1);            
           }else{           
               System.out.printf("%-3d",Math.abs(x)+1);               
           }          
        }         
        System.out.println();       
        }   
    }
 s}

8
打印

class Text08{    
     public static void main(String[] args){       
      /*       0           
             0 1 0           
           0 1 2 1 0     
         0 1 2 3 2 1 0         */   
         for(int i=1;i<=8;i++){   //总共为8行           
            for(int k=1;k<=8-i;k++){  //每行空格输出减一次              
                System.out.print("    ");  //因为随着数组位数增加所占宽度越大,最大为128,所以给每位数之间分配4个空格       
             }      
            for(int j=-(i-1);j<=i-1;j++){ //就从每行最大数为2的(i-1)次            
                 System.out.printf("%4.0f",Math.pow(2,i-1-Math.abs(j))); // 每行的数组都是2的多少次幂,且如上分析是先加再增,所以对幂取区间差的绝对值  。  从0开始所以先减个j最开始的整体,也可也画图        
             }         
          System.out.println();      
         }    
     }
 }
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值