JAVA基础04(循环语句)

1、for循环

     1、for循环语句格式:

       for(初始操作;循环继续条件;每次迭代后的操作){

          循环体

       }

    2.for循环的流程图如图a所示

                

    3、注意:

         控制变量必须在循环控制结构体内或循环前说明

         for循环中的初始动作和每次迭代后的动作可以是0个或多个以逗号隔开的变量声明声明语句或赋值表达式。如下 :

for(int i=0, j=0; i+j<10; i++,j++){
 
    //语句块
}

         如果省略for循环中的循环继续条件,则隐含的认为循环继续条件为true,称为死循环,如下

for(;;){
  // 语句块
}


for(;true;){

  //语句块
}

        for循环适用于循环次数已知的循环  

        4、for循环典型案例

             a.  打印出下面图形

                  *             

                  **           

                  ***          

                  ****         

                  *****       

                  ******

               

    for(int i=1;i<=6;i++){              //i 表示行数
            for(int j=1;j<=i;j++){
                System.out.print("*");
            }
            System.out.println();      //换行
    }

             b.           k     i

                   *       5    1

                  **       4    2

                 ***      3    3

                ****      2    4

               *****      1    5

              ******      0   6

        for(int i=1;i<=6;i++){                //行数
            for(int k=1;k<=6-i;k++){          //空格
                System.out.print(" ");
            }
            for(int j=1;j<=i;j++){
                System.out.print("*");        //*数
            }
            System.out.println();
        }

         c.

                                       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

       for(int i=1;i<=11;i++){
            for(int j=1;j<=i&&(i+j)<=12;j++){     //前六行依赖于j<=i  后五行依赖于(i+j)<=12
                System.out.print("*");
            }
            System.out.println();
        }

           d.

                                                    k  i    j

                                *                 -4  1  1

                               **                 -3  2  1 2

                              ***                 -2  3  1 2 3

                             ****                 -1 4  1 2 3 4

                            *****                 0  5  1 2 3 4 5

                             ****                 1   6  1 2 3 4

                              ***                  2   7 1 2 3

                                **                 3   8 1 2

                                  *                 4   9 1

        for(int i=1;i<=9;i++){
            for(int k=1;k<=Math.abs(i-5);k++){       
                System.out.print(" ");
            }
            for(int j=1;j<=i&&(i+j)<=10;j++){
                System.out.print("*");
            }
            System.out.println();
        }

            e.

                                        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

                      *    *           7         1 2 3

                       *  *            8           1 2

                         *             9             1        

      for(int i=1;i<=9;i++){
            for(int k=1;k<=Math.abs(i-5);k++){     //空格
                System.out.print(" ");
            }
            for(int j=1;j<=i&&(i+j)<=10;j++){
                if(j==1||j==i||j+i==10){           //判断*的位置
                    System.out.print("* ");
                }else{
                    System.out.print("  ");
                }
            }
            System.out.println();
        }

2.while循环

  1.while循环的语法格式如下:

         while( 循环继续条件){

                循环体

         }

   2.while循环的流程图如图所示:

               

     3.while循环注意事项:

        

          循环继续条件应该总是放在固括号内。只有当循环体只包含一条语句或不包含语句时,循环体的花括号才可以省略。

          若循环条件为true,则while循环成为死循环。所以我们要在合适条件下使用 break。代码格式如下:

      

        while(true){
            //循环体
            //循环步长
           // 何时退出循环break
        }

          while循环适合循环次数不确定的循环

        4.使用while编写一个程序随机产生一个 0到 100 之间且包含 0 100 的整数程序提示用户连续输人一个数字,直到它和计算机随机产生的数字相匹配为止对用户每次输入的数字程序都要告诉用户该输入值是偏大了,还 是偏小了,这样用户可以明智地进行下一轮的猜测

   

import java.util.*;
class Class12{
    public static void main(String[] args) {
        /*
        1.初始化:先输入一个数字
        2.继续条件:只要输入的数字不等于随机的
        3.循环体:先判断 
        4.步长:后重新输入
        while(true){
            循环体
            循环步长
            何时退出循环break
        }
        */
        Scanner scanner=new Scanner(System.in);
        int com=new Random().nextInt(101);//[0,n)            //电脑随机生成
        while(true){    //无条件开启死循环
            System.out.print("Guess a number:");            //提示用户输入数字
            int num=scanner.nextInt();
            if(num>com){
                System.out.println("too high");
            }else if (com==num){
                System.out.println("yes,you are right!");    //跳出循环            
                break;
            }else{
                System.out.println("too low");
            }
        }
   }
}

3.for循环和while循环可以相互转换

     如上面的while循环就可写成for循环,代码如下:

import java.util.*;
class Class12{
    public static void main(String[] args) {
        /*
        1.初始化:先输入一个数字
        2.继续条件:只要输入的数字不等于随机的
        3.循环体:先判断 
        4.步长:后重新输入
        while(true){
            循环体
            循环步长
            何时退出循环break
        }
        */
        Scanner scanner=new Scanner(System.in);
        int com=new Random().nextInt(101);//[0,n)
        
        for(;;){                                      //无条件开启死循环
            System.out.print("Guess a number:");
            int num=scanner.nextInt();
            if(num>com){
                System.out.println("too high");
            }else if (com==num){
                System.out.println("yes,you are right!");                
                break;
            }else{
                System.out.println("too low");
            }
        }
   }
}

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值