java-循环

引用变量时要给变量赋值,如果循环进不去就会报错。

一、循环结构的四要素

1.初始化条件

2.循环条件 ---> 是Boolean类型

3.循环体

4.迭代条件

说明:通常情况下,循环结束都是因为2中条件返回false了。

二、for循环

eg:题目:输入两个正整数m和n,求其最大公约数以及最大公倍数。
比如:12和20的最大公约数是4,最小公倍数是60.

说明:break关键字的使用

     import Java.util.Scanner;
        class ForTest {
        public static void main(String[] args) {
            Scanner scan = new Scanner(System.in); //实例化

            System.out.println("请输入第一个正整数:");

            int m = scan.nextInt();

            System.out.println("请输入第二个正整数:");

            int n = scan.nextInt();

            //获取最大公约数
            //1.获取两个数中的较小值
            int min = (m < n) ? m : n;

            //2.遍历
            for (int i = min; i >= 1; i--) {
                if (((m % i) == 0) && ((n % i) == 0)) {
                    System.out.println("最大公约数为:" + i); //如果没有break就输出 4,2,1

                    break; //一旦循环执行到break,就跳出循环。
                }
            }

        //获取最小公倍数
        //1.获取两个数中的较大值
        int max = (m >= n) ? m : n;

        //2.遍历
        for (int i = max; i <= (m * n); i++) {
            if (((i % m) == 0) && ((i % n) == 0)) {
                System.out.println("最小公倍数:" + i);

                break;
            }
        }
    }
 }

二、while循环

说明:写while循环千万小心不要丢了迭代条件。一旦丢失,就可能导致死循环。

for循环和while循环是可以相互转换的。

    class WhileTest {
          public static void main(String[] args) {
              //遍历100以内的偶数
              int i = 1;

              while (i <= 100) {
                  if ((i % 2) == 0) {
                      System.out.println(i);
                  }

                  i++;
              }

              //出了while循环依然可以调用
              System.out.println(i); //101
          }
      }

三、do-while循环

说明:do-while循环至少会执行一次循环体。

开发中使用较少。

    class DoWhileTest {
    public static void main(String[] args) {
        //遍历100以内的偶数,并求和以及得出个数
        int num = 1;
        int sum = 0;
        int count = 0;

        do {
            if ((num % 2) == 0) {
                System.out.println(num);
                sum += num;
                count++;
            }

            num++;
        } while (num <= 100);

        System.out.println("总和为:" + sum);
        System.out.println("个数为:" + count);
    }
}

四、综合

题目:从键盘读入个数不确定的整数,并判断读入正数和负数的个数,输入为0时结束程序。

说明:

1.不在循环条件部分限制次数的结构:for(;😉 或 while(true)
2.结束循环循环的两种方式:循环条件部分返回false 和 在循环体中,执行break
    import Java.util.Scanner;
    class ForWhileTest {
        public static void main(String[] args) {
            Scanner scan = new Scanner(System.in); //实例化

            int positiveNumber = 0; //记录正数的个数
            int negativeNumber = 0; //记录负数的个数

            while (true) {  //如果用for可以写成  for(;;){ ...  效果相同
                int number = scan.nextInt();

                //判断number的正负情况
                if (number > 0) {
                    positiveNumber++;
                } else if (number < 0) {
                    negativeNumber++;
                } else {
                    //一旦执行到break,跳出循环。
                    break;
               }
            }

            System.out.println("输入的正数个数为:" + positiveNumber);
            System.out.println("输入的负数个数为:" + negativeNumber);
        }
    }

五、嵌套循环的使用

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

例一:九九乘法表

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

            System.out.println();
         }
      }
    }

例二:100000以内所有质数的输出。 质数即素数,只能被1和它本身整除

    class PrimeNumberTest {
    public static void main(String[] args) {
        long start = System.currentTimeMillis();//起始时间

        for (int i = 2; i <= 100; i++) { //遍历100000以内的自然数

            boolean isFlag = true; //标识i是否被j除尽,一旦除尽,修改其值

            for (int j = 2; j < i; j++) { //j被i整除---优化2:将j < i 改成 j <= Math.sqrt(i)

                if ((i % j) == 0) { //i被j除尽
                    isFlag = false;
                    break;//优化1:只对本身非质数的自然数是有效的
                }
            }

            if (isFlag == true) {
                System.out.println(i);
            }
        }
        long end = System.currentTimeMillis();
        System.out.println("该程序执行完所花费时间为:" + (end - start) + "ms");
    }
}

六、break 和 continue 关键字的使用

break:使用在 switch-case 和 循环结构 中。-----作用:结束当前循环

continue:只使用在循环结构中。-----作用:结束当次循环

相同点:关键字后面不能声明执行语句。

    class BreakContinueTest {
    public static void main(String[] args) {
        
        for (int i = 1; i <= 10; i++) {
            if ((i % 4) == 0) {
                //break;//输出:1 2 3
                continue; //输出:1 2 3 5 6 7 9 10
            }

            System.out.print(i);
        }

        System.out.println("\n");

//***************************************

        label: for (int i = 1; i <= 4; i++) {
            for (int j = 1; j <= 10; j++) {
                if ((j % 4) == 0) {
                    //break;//默认跳出此关键字最近一层循环。
                    //continue;
                    //break label;//结束指定标识的一层循环结构
                    continue label; //结束指定标识的的一层循环结构的当次循环
                }

                System.out.print(j);
            }
        }
    }
}
posted @ 2020-02-18 16:38  旭东东  阅读(233)  评论(0)    收藏  举报