栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

自学Java(随时放弃 十一 循环结构语句①)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

自学Java(随时放弃 十一 循环结构语句①)

Java基础语法 (八) 循环结构语句

所谓循环,就是转圈,一次又一次的周而复始。

Java语言里的循环语句可以在满足循环条件的情况下,反复执行一段代码,这段被重复执行的代码,被称为循环体语句。

当然,这种循环不是永远的,循环判断的条件需要在合适的时机被修改为false,结束循环,否则一直执行这种代码,会形成死循环。

循环结构语句分为三种:for语句while循环do while语句。

下面让我们一个一个来认识他们。

一、for循环语句结构 (一)、格式
for(初始化语句;判断条件语句;控制条件语句){
	循环体语句;
}

注释:
①初始化语句:一条或者多条语句,这些语句完成一些初始化操作;
②判断条件语句:这是一个boolean类型的表达式,能决定是否执行循环体;
③循环体语句:就是电脑执行代码 “转圈” 的地方;
④控制条件语句:这个部分在一次循环体结束后,下一次循环判断条件执行前执行。通过用于控制循环条件中的变量,使循环在合适的时候结束。

(二)、执行流程

①执行初始化语句;
②执行判断条件语句,看结果是true还是false;(true执行,false结束循环)
③执行循环体语句;
④执行控制条件语句;
⑤回到第②条继续。




请输出10次“hello world”

谁的答案是 打印10次“System.out.println(“hello world”);”,我就给他一板砖……

━((′д`)爻(′д`))━!!!

当然这也是一种方法,但代码重复率太高,作为一个明日之星的程序员,要避免这种很low的写法。既然我们现在已经学习了循环语句,就要用新方法来改进。

写代码之前先分析一下:

设置一个int类型的变量x(因为10次这个数包含在int类型里),那么重复10次的话,x就应该<=10同时又>0,(因为是从1开始,重复输出10次),到了这一步,初始化语句和判断条件语句就有了。

接下来是循环体语句,老生常谈的hello world,还缺一个控制条件语句。

我先卖个关子,大家自己想一想应该是个啥。

(* ̄(oo) ̄)

public class demon {
    public static void main(String[] args) {
        for(int x=1; x<=10; x++){
            System.out.println("hello world");
        }

        }
    }
hello world
hello world
hello world
hello world
hello world
hello world
hello world
hello world
hello world
hello world

Process finished with exit code 0

怎么样,你猜对了吗?

也就是说,在这个程序里先设置一个int x=1的初始化条件(当然也可以从0开始),然后一个boolean类型的表达式,判断一下是否执行循环体,如果触发条件,则代码开始转圈,即输出hello world。

但输出一次hello world后(循环一次),下一次循环条件判断之前,触发控制条件语句,控制循环中的变量在合适时候结束。

哎呦妈耶,累死,不知道我是否说明白了,不明白也请多包涵吧。

(三)经典案例

例1
请输出数据1-10;
我们就可以写成:

public class demon {
    public static void main(String[] args) {
        for(int x=1; x<=10; x++){
            System.out.println(x);
        }

        }
    }

1
2
3
4
5
6
7
8
9
10

Process finished with exit code 0

怎么样,是不是感觉还可以……

如果题目改为:请输出数据10-1,你会做吗?

例2
请求出1-10之间的数据之和
当我们写任何代码之前,如果第一眼看不出答案,就先分析。

1-10之间的和=
0+1=1;
1+2=3;
3+3=6;
6+4=10;
10+5=15;
15+6=21;
21+7=28;
28+8=36;
36+9=45;
45+10=55

请各位仔细观察一下这组等式:

前一个算式的和,都会跟一个数相加,而这个数是从1-10逐个递加的规律。从这里我们可知,在接下来的代码里需要两个变量,即前一个算式的和,可以设为int x;及与其相加的加数,可以设为int y。

那么代码就可以写成这样:

public class demon {
    public static void main(String[] args) {
        int x=0;
        for(int y=1; y<=10; y++){
            x+=y;

            }
            System.out.println(x);
        }

        }


55

Process finished with exit code 0

例3
请计算出1-100之间,所有偶数相加的和

温馨提示:什么是偶数?

public class demon {
    public static void main(String[] args) {
        int x=0;
        for(int y=1; y<=100; y++){
            if(y%2==0){
               x+=y;
            }
        }
            System.out.println(x);
        }

        }

2550

Process finished with exit code 0

如果一个数能被2除尽,即为偶数。

请问这道题是否还有别的写法?

比如下面这样:

public class demon {
    public static void main(String[] args) {
        int x=0;
        for(int y=0; y<=100; y+=2){
               x+=y;

        }
            System.out.println(x);
        }

        }

如果求1-100之间所有奇数之和呢?

请你自己写一写,把答案贴在评论区。

例4
求5的阶乘
做这道题前,先搞清楚什么叫“阶乘”。如果你一早就知道,请自动屏蔽下面的文字。

所谓阶乘,就是从1到n的连续自然数相乘的积。0的阶乘是1,自然数n的阶乘写作n!。

任何大于等于1 的自然数n 阶乘表示方法:
n!=1* 2* 3* 4*……*(n-1)n

n!=n*(n-1)!

弄清楚了定义和公式以后,5!=1* 2* 3* 4* 5,这道题的代码就可以这样写:

public class demon {
    public static void main(String[] args) {
        int factorial=1;
        for(int x=1; x<=5; x++){
            factorial*=x;
            }
        System.out.println("1-5的阶乘:"+factorial);
    }
        }

1-5的阶乘:120

Process finished with exit code 0

注:factorial 阶乘

例5
请输出所有的“水仙花数”


水仙花人见人爱,但“水仙花数”估计很多人跟我一样是第一次听说。

下面借用百度百科的词条解释,给大家科普一下:

水仙花数(Narcissistic number)也被称为超完全数字不变数(pluperfect digital invariant, PPDI)、自恋数、自幂数、阿姆斯壮数或阿姆斯特朗数(Armstrong number),水仙花数是指一个 3 位数,它的每个位上的数字的 3次幂之和等于它本身。例如: 153=1^3 +5^3+ 3^3

现在知道题目意思了,让我们来着手分析一下:

①、三位数,首先限定了该数据的取值范围,即100 百位、十位、各位,可以分别设置为变量bai、shi、ge。

②、关键是怎么得到这个三位数百位、十位、各位上的数据,不能凭空出现,也非一成不变。

拿153这个数字举例:
各位上的数字:可以通过153对10取余得到,即153%10=3。
十位上的数字:可以通过让153先除以10(变成十位数),再对10取余得到,即153/10%10=5。
百位上的数字:可以通过让153除以两次10(变成个位数),再对10取余得到,即153/10/10%10=1。

③、如果让( ge * ge * ge)+(shi * shi * shi)+(bai * bai * bai)=x,那么就说明它是水仙花数,可以输出到控制台。

所以这道题的代码就可以写成:

public class demon {
    public static void main(String[] args) {
        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) {
                System.out.println("水仙花数为:" + x);
            }
        }
    }
}

水仙花数为:153
水仙花数为:370
水仙花数为:371
水仙花数为:407

Process finished with exit code 0

例6
请统计水仙花数一共有多少个

温馨提示两点:
①、题目要求看清楚;

②、定义统计变量,初始化值是0。



公布答案:

public class demon {
    public static void main(String[] args) {
        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

Process finished with exit code 0

例7
请统计1-1000之间,同时满足如下条件的数据有几个?
对3整除余2
对5整除余3
对7整除余2

分析过程请大家自己写,我直接公布答案:

public class demon {
    public static void main(String[] args) {
        int count=0;
        for (int x = 1; x < 1000; x++) {
            if (x%3==2 && x%5==3 && x%7==2) {
                count++;
            }
        }
        System.out.println("满足条件的数据个数为:" + count);
    }
}

满足条件的数据个数为:10

Process finished with exit code 0

例8
请输出满足以下条件的五位数
个位=万位
十位=千位
个位+十位+千位+万位=百位

我能不能把答案也省略呀,写代码好累的说

ublic class demon {
    public static void main(String[] args) {
        for (int x =1000; x < 10000; 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);
            }

        }

    }
}

满足条件的数据为:1210
满足条件的数据为:2420
满足条件的数据为:3630
满足条件的数据为:4840

Process finished with exit code 0

部分图片来自网络,侵权立删

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/659294.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号