java学习笔记6

bandao
2021-11-29 / 0 评论 / 99 阅读 / 正在检测是否收录...

1. 嵌套循环的使用

1. 定义

将一个循环结构A声明在另一个循环结构B的循环体中,就构成了嵌套循环

2. java代码

public class ForForTest {
    public static void main(String[] args) {
        for (int i = 0; i < 5; i++) {
            System.out.print("*");
        }
        System.out.println('\n');

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

        /*        i(行号)        j(*的个数)
         *        1            1
         **            2            2
         ***        3            3
         ****        4            4
         *****        5            5
         */
        for (int i = 0; i < 5; i++) {
            for (int j = 0; j <= i; j++) {
                System.out.print("*");
            }
            System.out.println();
        }

        /*        i(行号)        j(*的个数)   规律:i + j = 5 换句话说:j = 5 - i;
         ****        1            4
         ***        2            3
         **         3            2
         *        4            1
         */
        for (int i = 0; i < 4; i++) {
            for (int j = 0; j < 4 - i; j++) {
                System.out.print("*");
            }
            System.out.println();
        }
    }
}

3. Tip

  1. 内层遍历一遍,相当于外层循环一次
  2. 假设外层循环执行m次,内层循环执行n次。
    此时内层循环的循环体一共执行了m * n次

    4. 九九乘法表

    public class NineNineTable {
     public static void main(String[] args) {
         for (int i = 1; i <= 9; i++) {
             for (int j = 1; j <= i; j++) {
                 System.out.print(i + "*" + j + "=" + (i * j) + "\t");
             }
             System.out.println();
         }
     }
    }

    2. break,continue,label的基本使用

    1. break,continue的基本使用

    break和continue使用范围循环中使用的作用(不同点)相同点
    break:switch-case 循环结构中结束当前循环关键字后面不能声明执行语句
    continue:循环结构中结束当次循环关键字后面不能声明执行语句

    2. java代码

    public class BreakContinueTest {
     public static void main(String[] args) {
         for(int i = 1;i <= 10;i++){
             if(i % 4 == 0){
                 break;//123
                 //continue;//123567910
                 //System.out.println("今晚迪丽热巴要约我!!!");
             }
             System.out.print(i);
         }
         System.out.println();
    
         for (int i = 1; i <= 4; i++) {
             for (int j = 1; j <= 10; j++) {
                 if(j % 4 == 0){
                     break;
                 }
                 System.out.print(j);
             }
             System.out.println();
         }
    
         label:for(int i = 1;i <= 4;i++){
             for(int j = 1;j <= 10;j++){
                 if(j % 4 == 0){
                     //break label;//结束指定标识的一层循环结构
                     continue label;//结束指定标识的一层循环结构当次循环
                 }
                 System.out.print(j);
             }
             System.out.println();
         }
     }
    }

    2. 求100000以内的所有质数的输出(逐渐优化)

    1. 方法1

    public class PrimeNumberTest {
     public static void main(String[] args) {
         boolean isFlag = true;
    
         for (int i = 2; i <= 100; i++) {        //遍历100以内的自然数
             for (int j = 2; j < i; j++) {       //j:被i去除
                 if (i % j == 0){                //i被j除尽
                     isFlag = false;
                     break;
                 }
             }
             if(isFlag == true){
                 System.out.println(i);
             }
             isFlag = true;                      //重置isFlag
         }
     }
    }

    2.方法2

    public class PrimeNumberTest1 {
     public static void main(String[] args) {
         boolean isFlag = true;
         int count = 0;//记录质数的个数
    
         long start = System.currentTimeMillis();//时间戳
    
         for (int i = 2; i <= 100000; i++) {     //遍历100以内的自然数
             for (int j = 2; j < Math.sqrt(i); j++) {       //j:被i去除
                 if (i % j == 0){                //i被j除尽
                     isFlag = false;
                     break;
                 }
             }
             if(isFlag == true){
                 //System.out.println(i);
                 count++;
             }
             isFlag = true;                      //重置isFlag
         }
    
         long end = System.currentTimeMillis();//时间戳
         System.out.println("质数的个数为:" + count);
         System.out.println("所花费的时间为:" + (end - start));//17110 - 优化一:break:1546 - 优化二:13
     }
    }

    3. 方法3

    public class PrimeNumberTest2 {
     public static void main(String[] args) {
         int count = 0;//记录质数的个数
         long start = System.currentTimeMillis();//时间戳
    
         label:for (int i = 2; i <= 100000; i++) {     //遍历100以内的自然数
             for (int j = 2; j < Math.sqrt(i); j++) {       //j:被i去除
                 if (i % j == 0){                      //i被j除尽
                     continue label;
                 }
             }
             //能执行到此步骤的,都是质数
             count++;
         }
    
         long end = System.currentTimeMillis();//时间戳
         System.out.println("质数的个数为:" + count);
         System.out.println("所花费的时间为:" + (end - start));//17110 - 优化一:break:1546 - 优化二:13
     }
    }
0

评论 (0)

取消