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

求和思想

  • 求出 1 - 10000 之和

    1 - 10000 之和
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    /*
    需要两个变量:
    一个用于存储加数,也就是保存之前所有数据之和,默认值为 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
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
/*
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
/*
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
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    *
    **
    ***
    ****
    *****
    ******
    *******
    ********
    *********
    --------------------------

    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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
/*
定义一个统计变量,默认值为 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
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    第 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次