Java 02 练习[循环]

1) 水仙花数

水仙花数是指一个 n 位正整数 ( n≥3 ),它的每个位上的数字的 n 次幂之和等于它本身。(例如:1^3 + 5^3+ 3^3 = 153)
这里列举了三位数的情况:

    for(int i=100; i<1000; i++){
        int baiwei = i / 100;
        int shiwei = (i - baiwei * 100) / 10;
        int gewei = i % 10;

        if(i == (baiwei * baiwei * baiwei)+(shiwei * shiwei * shiwei)+(gewei * gewei * gewei))  {
            System.out.println(i);
        }
    }

水仙花数-执行结果
水仙花数-执行结果

2) 输出100以内所有奇数的和

    int sum=0;
    for(int i=1; i<=100; i+=2){
        sum+=i;
    }
    System.out.println(sum);

100以内所有奇数的和-执行结果
100以内所有奇数的和-执行结果

3) 1~100之间所有是7的倍数的整数

    int sum=0;
    int count=0;
    for(int i=1; i<=100; i++){
        if(i % 7 == 0){
            // System.out.println(i);  打印1~100之间所有是7的倍数的整数
            sum += i;
            count += 1;
        }
    }
    System.out.println("1~100之间所有是7的倍数的整数的个数为:" + count);
    System.out.println("总和为:" + sum);

1~100之间所有是7的倍数的整数-执行结果
1~100之间所有是7的倍数的整数-执行结果

4) 求最小公倍数和最大公约数

    int m = 1;
    int n = 28;

    int max = (m > n) ? m : n;
    int min = (m > n) ? n : m;

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

    for (int i = min; i >= 1; i--) {
        if (m % i == 0 && n % i == 0) {
            System.out.println("最大公约数:" + i);
            break;
        }
    }

5) 九九乘法表

    for (int i = 1; i <= 9; i++) {
        for (int j = 1; j < 1 + i; j++) {
            String result;
            if ((j * i) < 10) {
                result = "0" + (j * i);
            } else {
                result = "" + (j * i);
            }
            System.out.print(j + "*" + i + "=" + result + " ");
        }
        System.out.println();
    }

九九乘法表-执行结果
九九乘法表-执行结果

6) 图形打印

(1) 例子1

    for (int i = 0; i < 4; i++) { // 控制行数
        for (int j = 0; j < 5; j++) { // 控制列数
            System.out.print("*"); // 注意 : 此处是print()不是println()
        }
        System.out.println();
    }

打印图形:例子1-执行结果
打印图形:例子1-执行结果

(2) 例子2

    for (int i = 0; i < 5; i++) {
        for (int j = -1; j < i; j++) { // j的初始化值要比i的初始化值小1
            System.out.print("*");
        }
        System.out.println();
    }

打印图形:例子2-执行结果
打印图形:例子2-执行结果

(3) 例子3

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

打印图形:例子3-执行结果
打印图形:例子3-执行结果

(4) 例子4

    for (int i = 0; i < 5; i++) {
        for (int j = 0; j < 4 - i; j++) { // 控制每列需要打印的空格
            System.out.print(" ");
        }
        for (int j = 0; j < i + 1; j++) { // j的初始化值和i的初始化值一样,则需要在循环条件处加1
            System.out.print(" *");
        }
        System.out.println();
    }

打印图形:例子4-执行结果
打印图形:例子4-执行结果

(5) 例子5

当知道原理时,你就可以叠加使用。

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

打印图形:例子5-执行结果
打印图形:例子5-执行结果

7) 取100内的质数【节约时间和资源的思想】

    int count = 0;

    boolean flag = false;

    long b=System.currentTimeMillis();
    for (int i = 2; i <= 100; i++) {
        for (int j = 2; j <= Math.sqrt(i); j++) { // 开根号i,极大地缩短了时间
            if (i % j == 0) {
                flag = true;
                break; // 提前退出循环,节约时间
            }
        }
        if (!flag) {
            count += 1;
            System.out.println(i);
        }
        flag = false;
    }
    System.out.println("共" + count + "个质数");
    long e=System.currentTimeMillis();
    System.out.println((double)(e-b) / 1000 + "秒");

取100内的质数【节约时间和资源的思想】-执行结果
取100内的质数【节约时间和资源的思想】-执行结果

嵌套for循环 tips

  1. 注意:循环嵌套,里层的for循环一旦循环完毕就会初始化变量。
  2. [打印图形] 三角形 : for ( ; (1+i); )   倒三角形 : for ( ; (层数-i); )
  3. [打印图形] 不要几层(从第一层开始): i从几层开始计数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值