循环语句

一、for(){}

基本结构:
    for( A ; B ; C ) {    D    }

  •  A 用来声明并初始化变量
  •  B 是一个逻辑表达式,用于决定循环是否执行
  •  C 通常被称作 迭代部分 或 递进部分,用于实现对控制循环的变量的增加或减少等操作
  •  D 表示循环体中要执行的语句 ( 就是要完成什么任务 )

 执行顺序:
    A ->  B ->  D -> C
    B -> D -> C
    ..............
    B

public class Loop1 {

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

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

        // 在 for 语句中声明并初始化的变量只能在 for 语句块内部使用
        for ( int i = 0 , j = 10 ; i < 10 && j > 0 ; i++  , j-- ) {
            System.out.println( "i = " + i + " , j = " + j );
        }

    }

}

二、while(){}

while ( 判断 ) {
     循环语句
     迭代
}

public class Loop2 {

    public static void main(String[] args) {

        
        // while ( 判断 ) {
        //      循环语句
        //      迭代
        // }

        int i = 10 ; // 声明变量并初始化
        while ( i > 0 ) { // 在 while 语句中之后的 ( ) 内执行判断
            System.out.println( "i = " + i ); // 这个输出语句相当于循环要完成的操作
            i-- ; // 迭代部分 ( 实现变量的变化,比如 变量增长 或 减少 )
        }

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

        int j = 0 ; // 初始化
        while( j++ < 10 ){ // 迭代 和 判断
            System.out.println( "j = " + j );  // 循环要完成的操作
        }

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

        int a = 100 ;
        int b = 200 ;
        System.out.println( "a = " + a + " , b = " + b );
        while( a++ < b-- ); // 没有循环体
        System.out.println( "a = " + a + " , b = " + b );
        
    }

}

三、do{}while()

1、基本结构
       do { } while () ;
       注意最后的分号
2、while 循环 和 do...while 循环都可以在不明确循环次数的前提下完成循环操作
3、while 循环会先执行 判断 ( 因为 while 关键字之后就是 逻辑判断表达式 )
4、do...while 循环会首先执行 do 和 while 之间的代码,再执行之后才进行判断

public class Loop3 {

    public static void main(String[] args) {

        // 创建一个用于读取用户输入数据的扫描器
        Scanner s = new Scanner( System.in );

        int x = -1 ; // 初始化
        do {
            System.out.println( "请输入 0 到 100 之间的数字:" );
            x = s.nextInt(); // 读取用户在控制台中输入的整数
            System.out.println( "您输入的是 " + x );
         } while ( x < 0 || x > 100 ) ;

        System.out.println( "输入正确" );

         s.close();

    }

}

四、continue  and  break

1、continue 语句用于实现 略过 循环语句中 本轮操作的后续语句,直接进入下一轮操作
2、continue 默认针对它所在的循环有效 ( 就是 离 continue 语句最近的循环 )
3、break 语句用于跳出循环语句块 ( 整个循环会结束 )
4、break 默认针对它所在的循环有效 ( 就是 离 break 语句最近的循环 )

public class Loop6 {

    public static void main(String[] args) {

        for( int i = 1 ; i < 10 ; i++ ) {
            if( i == 2 ) {
                // 略过本次循环后续语句直接进入下次
                continue ; // 整个循环并没结束,而是略过本轮中后续操作直接进入下一轮操作
            }
            System.out.print( i + " " ); // 循环当中输出的内容不换行
        }
        System.out.println(); // 等到循环执行结束后再输出换行符

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

        for( int i = 1 ; i < 10 ; i++ ) {
            if( i == 2 ) {
                break ; // 跳出循环语句块,整个循环结束
            }
            System.out.print( i + " " ); // 循环当中输出的内容不换行
        }
        System.out.println(); // 等到循环执行结束后再输出换行符

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

        for( int i = 1 ; i < 10 ; i++ ){
            System.out.print( i + ": " );
            for( int j = 1 ; j < 10 ; j++ ) {
                if( i == 5 && j == 5 ) {
                    continue ;
                }
                System.out.print( j + " " );
            }
            System.out.println();
        }

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

        for( int i = 1 ; i < 10 ; i++ ){
            System.out.print( i + ": " );
            for( int j = 1 ; j < 10 ; j++ ) {
                if( i == 5 && j == 5 ) {
                    break ;
                }
                System.out.print( j + " " );
            }
            System.out.println();
        }

    }

}

五、outer  and  inner

1、使用 标签(label)(outer,inner) 标识循环语句块
2、在 continue 语句 和 break 语句中可以使用 标签( label ) 来指定针对那层循环

public class Loop7 {

    public static void main(String[] args) {

        outer:for( int i = 1 ; i <= 5 ; i++ ){
            System.out.print( i + ": " );
            inner:for( int j = 1 ; j <= 5 ; j++ ) {
                if( i == 3 && j == 3 ) {
                    continue inner ; // 在 continue 语句中可以使用 标签
                }
                System.out.print( j + " " );
            }
            System.out.println();
        }

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

        outer:for( int i = 1 ; i <= 5 ; i++ ){
            System.out.print( i + ": " );
            inner:for( int j = 1 ; j <= 5 ; j++ ) {
                if( i == 3 && j == 3 ) {
                    continue outer ; // 在 continue 语句中可以使用 标签
                }
                System.out.print( j + " " );
            }
            System.out.println();
        }

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

        outer:for( int i = 1 ; i <= 5 ; i++ ){
            System.out.print( i + ": " );
            inner:for( int j = 1 ; j <= 5 ; j++ ) {
                if( i == 3 && j == 3 ) {
                    break inner ; // 在 break 语句中可以使用 标签
                }
                System.out.print( j + " " );
            }
            System.out.println();
        }

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

        outer:for( int i = 1 ; i <= 5 ; i++ ){
            System.out.print( i + ": " );
            inner:for( int j = 1 ; j <= 5 ; j++ ) {
                if( i == 3 && j == 3 ) {
                    break outer ; // 在 break 语句中可以使用 标签
                }
                System.out.print( j + " " );
            }
            System.out.println();
        }

    }

}

六、十进制(正整数)转二进制

除二取余,除尽为止,(余数)尾首相连

public class Loop4 {

    public static void main(String[] args) {

        String s = "" ;
        s = "abc" ;
        System.out.println( "s : " + s );
        s =  "123" + s ; // 注意 s = "123" + s ; 与 s = s + "123" ; 的区别
        System.out.println( "s : " + s );

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

        int x = 25 ;
        String binary = "" ;
        final int p = x ;

        while( x != 0 ){
            int y = x % 2 ; // 整除二取余数
            binary = y + binary ; // 这里的 + 相当于 字符串连接符
            // System.out.println( binary ); // 通过输出语句验证每次循环产生内容
            // 对 x 变量的取值整除二取商,并将商赋值到 x 变量中
            x /= 2 ; // x = x / 2 ;
            // System.out.println( x ); // 通过输出可以查看 x 变量中取值的变化过程
        }

        // System.out.println( "x = " + x ); // 验证 x 已经变成 0 ( 就是口诀中的 除尽为止 )
        System.out.println( p + " 的二进制形式是: " + binary );

        // 如果期望 二进制 形式 是 32 位,可以考虑在 二进制字符串前面补充 字符 0 

    }

}

七、十进制(正整数)转八进制

除八取余,除尽为止,(余数)尾首相连

public class Loop5 {

    public static void main(String[] args) {

       final int x = 100 ; // 需要转换的十进制正整数
       final int b = 8 ; // 基数

       String target = "" ; // 初始化

       /*
       int y = x ;  // 初始化
       while( y != 0 ) { // 判断
            int z = y % b ; // 循环需要完成的操作
            s = z + s ;  // 循环需要完成的操作
            y /= b ; // 迭代 ( 让控制循环的变量变起来 )
       }
       */

      for ( int y = x ; y != 0 ; y = y / b ) {
        target = ( y % b ) + target ; 
      }

      System.out.println( x + " 的 " + b + " 进制形式是 " + target );

    }

}

八、十进制(正整数)转十六进制

public class Loop4 {

    public static void main(String[] args) {

        String s = "" ;
        String hex = "" ;
        int x = 100000 ;
        int p = x;
        while( x != 0 ){
            int y = x % 16 ; 

            switch (y){
                case 10:
                    s = "A";
                    break;
                case 11:
                    s = "B";
                    break;
                case 12:
                    s = "C";
                    break;
                case 13:
                    s = "D";
                    break;
                case 14:
                    s = "E";
                    break;
                case 15:
                    s = "F";
                    break;
                default:
                    s = y + "";
            }
            hex = s + hex ;
            x /= 16 ;
        }
        System.out.println(  p + " 的十六进制形式是: " + hex );

    }

}

 

posted @ 2020-05-10 17:15  李元坤  阅读(188)  评论(0编辑  收藏  举报