Java 循环之求和、统计思想以及简单练习

本文首发于我的个人网站:http://staunchkai.com

求和思想

  • 求出 1 - 10000 之和
/*
    需要两个变量:
        一个用于存储加数,也就是保存之前所有数据之和,默认值为 0
        另一个用于存储被加数,也就是保存每次数据变化的值
*/
class Demo0{
    public static void main(String[] args){
        // 第一个加数
        int sum = 0;

        for(int x = 1; x <= 10000; x++){
            sum += x;
        }
        System.out.println("sum: " + sum);
    }
}
  • 结果为:sum:50005000

统计思想

  • 统计 “水仙花” 数的个数
    水仙花数:
    例如:153 –> 1x1x1 + 5x5x5 + 3x3x3 = 153
/*
    1. 获取每个三位数的个、十、百的数据
    2. 按要求进行判断
    3. 如果满足就进行计数    
*/
class Demo1{
    public static void main(String[] args){
        // 定义统计变量,初始值为 0
        int count = 0;

        for(int x = 100; x < 1000; x++){
            // 获取每个数的个、十、百
            int ge = x%10;
            int shi = x/10%10;
            int bai = x/10/10%10;

            if(x == (ge*ge*ge + shi*shi*shi + bai*bai*bai)){
            count++;
            }
        }        
        System.out.println("水仙花数共有: " + count + " 个");
    }
}
  • 结果为:水仙花数共有: 4 个

其他练习

九九乘法表

/*
    1*1=1
    1*2=2   2*2=4
    1*3=3   2*3=6   3*3=9
    ...
    1*9=9   2*9=18  3*9=27  ...

    想象为这个形状:
    *
    **
    ***
    ****
    *****
    ...
*/
class Demo2{
    public static void main(String[] args){
        for(int x = 0; x < 9; x++){
            for(int y = 0; y <= x; y++){
                System.out.print("*");
            }
            System.out.println();
        }

        System.out.println("--------------------------")
        for(int x = 0; x <= 9; x++){
            for(int y = 1; y <= x; y++){
                System.out.print(y + "*" + x + "=" + y * x + "\t");
            }
            System.out.println();
        }        
    }
}
  • 结果为:
*
**
***
****
*****
******
*******
********
*********
--------------------------

1*1=1
1*2=2   2*2=4
1*3=3   2*3=6   3*3=9
1*4=4   2*4=8   3*4=12  4*4=16
1*5=5   2*5=10  3*5=15  4*5=20  5*5=25
1*6=6   2*6=12  3*6=18  4*6=24  5*6=30  6*6=36
1*7=7   2*7=14  3*7=21  4*7=28  5*7=35  6*7=42  7*7=49
1*8=8   2*8=16  3*8=24  4*8=32  5*8=40  6*8=48  7*8=56  8*8=64
1*9=9   2*9=18  3*9=27  4*9=36  5*9=45  6*9=54  7*9=63  8*9=72  9*9=81

一张厚 0.01m 的纸叠多少次不低于珠穆朗玛峰 8848

/*
    定义一个统计变量,默认值为 0
    折叠一次,厚度是之前的两倍
    只要折叠一次,就统计一次
*/
class Demo3{
    public static void main(String[] args){
        int count = 0;

        // 为了简单,把 0.01 变为 1;8848 变为 884800
        int end = 884800;
        int start = 1;

        while(start < end){
            count++;

            start *= 2;
            System.out.println("第 " + count + " 次有" + start + "米");
        }
        System.out.print("总共需要叠:" + count + "次");
    }
}
  • 结果为:
第 1 次有 2 米
第 2 次有 4 米
第 3 次有 8 米
第 4 次有 16 米
第 5 次有 32 米
第 6 次有 64 米
第 7 次有 128 米
第 8 次有 256 米
第 9 次有 512 米
第 10 次有 1024 米
第 11 次有 2048 米
第 12 次有 4096 米
第 13 次有 8192 米
第 14 次有 16384 米
第 15 次有 32768 米
第 16 次有 65536 米
第 17 次有 131072 米
第 18 次有 262144 米
第 19 次有 524288 米
第 20 次有 1048576 米
总共需要叠:20次

猜你喜欢

转载自blog.csdn.net/staunchkai/article/details/80487876
今日推荐