第二章:09流程控制[3for]

①格式

for(初始化语句;判断条件语句;控制条件语句) {

    循环体语句;

}

②注意事项

A:判断条件语句无论简单还是复杂结果是boolean类型。

B:循环体语句如果是一条语句,大括号可以省略;如果是多条语句,大括号不能省略。建议永远不要省略。

C:一般来说:有左大括号就没有分号,有分号就没有左大括号

③实例

/*

For循环结构的使用

一、循环结构的4个要素

① 初始化条件

② 循环条件  --->是boolean类型

③ 循环体

④ 迭代条件

二、for循环的结构

for(①;②;④){

   ③

}

执行过程:① - ② - ③ - ④ - ② - ③ - ④ - ... - ②

*/

class ForTest {

   public static void main(String[] args) {

       /*

       System.out.println("Hello World!");

       System.out.println("Hello World!");

       System.out.println("Hello World!");

       System.out.println("Hello World!");

       System.out.println("Hello World!");

       */

       for(int i = 1;i <= 5;i++){//i:1,2,3,4,5

           System.out.println("Hello World!");

       }

       //i:在for循环内有效。出了for循环就失效了。

       //System.out.println(i);

       

       //练习:

       int num = 1;

       for(System.out.print('a');num <= 3;System.out.print('c'),num++){

           System.out.print('b');

       }

       //输出结果:abcbcbc

       System.out.println();

       //例题:遍历100以内的偶数,输出所有偶数的和,输出偶数的个数

       int sum = 0;//记录所有偶数的和

       int count = 0;//记录偶数的个数

       for(int i = 1;i <= 100;i++){

           

           if(i % 2 == 0){

               System.out.println(i);

               sum += i;

               count++;

           }

           //System.out.println("总和为:" + sum);

       }

       System.out.println("总和为:" + sum);

       System.out.println("个数为:" + count);

   }

}

 

需求:求5的阶乘。

什么是阶乘呢?

    n! = n*(n-1)! 规则

    n! = n*(n-1)*(n-2)*...*3*2*1

      //定义最终结果变量

      int jc = 1;

      //这里的x其实可以直接从2开始

      for(int x=2; x<=5; x++) {

          jc *=x;

      }

      System.out.println("1-5的阶乘是:"+jc);

需求:在控制台输出所有的”水仙花数”  

分析:

    所谓的水仙花数是指一个三位数,其各位数字的立方和等于该数本身。

    举例:153就是一个水仙花数。

    153 = 1*1*1 + 5*5*5 + 3*3*3 = 1 + 125 + 27 = 153

    A:三位数其实是告诉了我们范围。

    B:通过for循环我们就可以实现获取每一个三位数

      但是麻烦是如何获取这个三位数的个,十,百位上的数据

      我们如何获取一个数据的个,十,百呢?

        假设有个一个数据:153

        ge:    153%10 = 3

        shi: 153/10%10 = 5

        bai:153/10/10%10 = 1

        qian:x/10/10/10%10

        wan:  x/10/10/10/10%10

        ...

    C:让ge*ge*ge+shi*shi*shi+bai*bai*bai和该数据比较

      如果相同,就把该数据在控制台输出。

 

             //三位数其实是告诉了我们范围。

    for(int x=100; x<1000; x++) {

        int ge = x%10;

        int shi = x/10%10;

        int bai = x/10/10%10;

        //让ge*ge*ge+shi*shi*shi+bai*bai*bai和该数据比较

        if(x == (ge*ge*ge+shi*shi*shi+bai*bai*bai)) {

            //如果相同,就把该数据在控制台输出。

            System.out.println(x);

        }

    }

练习:请在控制台输出满足如下条件的五位数

    个位等于万位

    十位等于千位

    个位+十位+千位+万位=百位

分析:

    A:五位数就告诉了我们范围。

    B:分解每一个五位数的个,十,百,千,万位上的数据

    C:按照要求进行判断即可

    //五位数就告诉了我们范围。

    for(int x=10000; x<100000; x++) {

        //分解每一个五位数的个,十,百,千,万位上的数据

        int ge = x%10;

        int shi = x/10%10;

        int bai  = x/10/10%10;

        int qian = x/10/10/10%10;

        int wan = x/10/10/10/10%10;

        //按照要求进行判断即可

        if((ge==wan) && (shi==qian) && (ge+shi+qian+wan==bai)) {

            System.out.println(x);

        }

    }

 

/*

题目:输入两个正整数m和n,求其最大公约数和最小公倍数。

比如:12和20的最大公约数是4,最小公倍数是60。

说明:break关键字的使用:一旦在循环中执行到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;//一旦在循环中执行到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;

           

           }

       }

       

   }

}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 
上一篇:MT【348】反函数图像解题


下一篇:中科大-凸优化 笔记(lec11)-凸函数:二阶条件