JavaSE学习(四):数据结构之循环:for、while循环

第一 循环结构 for、while、do while

1.1 for 循环

语法结构:

for(表达式一;表达式二;表达式三) {

  循环体

}

语法解析:

表达式一:声明初始化变量,只执行一次。可以同时声明多个变量用逗号隔开。

表达式二:判断变量是否需要循环的条件。

表达式三:每次执行完循环体后,变量变化的具体情况。

当for循环开始执行后,表达式一开始声明初始化变量,初始化变量后,执行表达式二判断变量是否满足布尔表达式,若不满足条件,执行结束,若满足条件,则执行循环体内的内容,执行完后再执行表达式三改变变量的值,再执行表达式二判断改变后的值是否满足条件,一次循环,直到不满足表达式二里的布尔表达式。

例程Demo3.java

 1 public class Demo3{
 2     public static void main(String[] args) {
 3
 4         int i ;                      //全局变量,main方法范围内都可以调用
 5         for(i=1; i<5;++i){
 6
 7             System.out.println("我是for里面的i="+i);
 8
 9         }
10         System.out.println("我是for外面的i="+i);     //全局变量,main方法范围内都可以调用
11         for (int j =1; j<7; ++j){
12
13             System.out.println("我是for里面的 j="+j);         //局部变量,只能在定义范围内调用
14         }
15         //System.out.println("我是for外面的 j"+j);
16
17     }
18
19 }

1.2 局部变量与全局变量(有误?)

全局变量:main范围内,都能被执行;

局部变量:定义在局部,只能在局部范围内被执行。作用域具有局限性,比如在for循环中定义的变量,只能在该for循环中被访问,出了范围就不能被访问。

例程Demo3.java

思考:表达式1写在for循环外出现什么情况?

表达式2不写会出现什么情况?//死循环

表达式3不写会出现什么情况?//死循环

表达式1,2,3都不写会出现什么情况?//死

1.2.1练习

1:求1-100内所有数/奇数/偶数的和;

2: 5的阶乘

3:1-1000内的水仙花数

Text1.java

 1 public class Text1{
 2     public static void main(String[] args){
 3         int i,sum=0;
 4         for( i=1;i<101; ++i){
 5             sum =sum+i;
 6
 7         }
 8         System.out.println("1到100的和是:"+sum);
 9
10         int j,sumJiShu=0;
11         for( j=1; j<100;  j+=2){
12
13             sumJiShu =sumJiShu+j;
14
15         }
16         System.out.println("1到100所有奇数的和是:"+sumJiShu);
17
18         int k,sumOuShu=0;
19         for(k=2;k<101;  k+=2){
20
21             sumOuShu =sumOuShu+k;
22
23         }
24         System.out.println("1到100所有偶数的和是:"+sumOuShu);
25
26
27         int x,sumjShu=1;
28         for(x=1;x<6;  x+=1){
29
30             sumjShu =sumjShu*x;
31
32         }
33         System.out.println("5的阶乘是:"+sumjShu);
34
35
36         int y,a,b,c;
37         int conunt = 0;
38         //求1-1000的水仙花数
39         //三位数,每位数的个位,十位,百位所对应的数值的立方的和正好等于这个数。
40         for(y=100; y<1000;  ++y){
41
42             a=y/100 ;   //百位
43
44             b=(y/10)%10 ;
45
46             c=y%10 ;
47
48
49             if (a*a*a+b*b*b+c*c*c ==y){
50
51                 System.out.println("水仙花数为:"+y);
52                 conunt ++;
53
54             }
55
56         }
57
58         System.out.println("共有水仙花数"+conunt+"个");
59
60     }
61
62 }

1.3 while 循环

语法:

while(布尔表达式){

循环内容;

}

语法解析:满足布尔表达式执行循环内容,不满足跳出循环,一般循环里包括改变循环条件的变量。

例程:Demo5.java

 1 public class Demo5{
 2     public static void main(String[] args){
 3         int i = 0;
 4         while (i<10){
 5             System.out.println("鲁班七号");
 6             i++;
 7         }
 8
 9         int j = 0;
10         while (true){
11             System.out.println("智障二百五");
12             j++;
13             if(j==10){
14                 break;       //跳出循环,离它最近的一层循环while循环
15             }
16
17         }
18
19     }
20
21 }

1.3.1 break关键字

作用:

1、在Java中做终止符,防止渗透;

2、跳出循环的一个条件(跳出离它最近的一层的循环);

例程:Demo5.java

1.3.2 contiue关键字

作用:跳过单次循环,不继续执行本次循环内容,继续进行下一次循环

例程:Demo6.java

 1 public class Demo6{
 2     public static void main(String[] args){
 3         //continue 关键字
 4         int i = 0;
 5         while (i<10) {
 6             i++;
 7             if (i==5){
 8
 9                 System.out.println("吃到第"+i+"个包子看见虫!");
10
11                 continue;
12             }
13
14             System.out.println("小明吃了第"+i+"个包子!");
15
16         }
17
18     }
19
20 }

思考题:for循环和while循环可以互换吗?for循环与while循环运用的时机是什么时候?

可以互换。可以进行互换,但往往一般是知道循环次数的情况下进行互换。for循环一般用于知道循环的次数;while循环一般用于不知道循环次数。

1.4 do while 循环

语法:

do {

  循环内容;

}  while(布尔表达式);

语法解析:先执行一次循环内容,再判断是否满足条件,满足布尔表达式执行循环内容,不满足跳出循环,一般循环里包括改变循环条件的变量。

例程:Demo7.java

 1 public class Demo7{
 2     public static void main(String[] args){
 3         int i =-8;
 4         do{
 5             System.out.println(i);
 6         }while(i >0);
 7
 8     }
 9
10 }

思考题:while 与do while的区别?

while 循环可能一次循环内容都不会执行,但是do while 循环至少会执行一次循环内容。

例程:Demo7.java

练习用while实现一千内的水仙花数并计数;

1.5 循环的嵌套(for循环嵌套为主)

for(int i=0;i<M;i++){

for(int j=0; j<N;j++){

  循环体内容

}

}

语法解析:外层循环循环一次,里层循环循环直到跳出循环为止,循环的总次数为M*N次。

例程:用for 循环实现九九乘法口诀Demo8.java

 1 public class Demo8{
 2     public static void main(String[] args){
 3         /***
 4
 5         for嵌套实现乘法口诀
 6         1*1=1
 7         1*2=2   2*2=4
 8         1*3=3   2*3=6   3*3=9
 9         1*4=4   2*4=8   3*4=12  4*4=16
10         1*5=5   2*5=10  3*5=15  4*5=20  5*5=25
11         1*6=6   2*6=12  3*6=18  4*6=24  5*6=30  6*6=36
12         1*7=7   2*7=14  3*7=21  4*7=28  5*7=35  6*7=42  7*7=49
13         1*8=8   2*8=16  3*8=24  4*8=32  5*8=40  6*8=48  7*8=56  8*8=64
14         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
15
16         */
17
18         int result;
19
20         for(int j=1; j<=9;   j++){
21
22             for(int i=1;i<=j;  i++){
23
24                 result = i*j;
25                 System.out.print( i+"*"+j+"="+ result+"\t");   //"制表符\t"
26
27             }
28         System.out.println( );
29
30         }
31
32     }
33
34 }

原文地址:https://www.cnblogs.com/Kanekiyi/p/9500995.html

时间: 2024-10-09 20:59:30

JavaSE学习(四):数据结构之循环:for、while循环的相关文章

第四章 了不起的分支和循环[DDT书本学习 小甲鱼]【2】

4.4 Python可以有效避免"悬挂else" Python的缩进使用强制规定使得代码必须正确对齐,else属于那个if清晰可见.4.5 条件表达式(三元操作符) 代码 if x<y: small=x else: small=y 将以上代码用三元操作符来表示 语法 a=x if 条件 else y 含义:如果条件真则a=x,如果条件假则a=y. 代码改进 small=x if x<y else y Python的代码简洁高效!!!4.6 断言 assert 是分支if的近

[学习笔记]数据结构与算法

1.排序简单排序:?冒泡排序:将n个数从上往下排列,从第0个数开始依次对前n个.前n-1个.前n-2个数进行比较,保持小数在前大数在后,不符合就交换.在这个过程中,最后一个数始终是最大数.?选择排序:对所有n个.后n-1个.后n-2个依次比较,用一个变量存最小数,一趟比较完成之后,将最小数与所比较数据的第一个数进行交换.在这个过程中,第一个数始终是最小数.?插入排序:从第1个数开始向前扫描比较,小则插入.对于未排序数据,在已排序序列中向前扫描,并找到相应的位置插入.在这个过程中,整个序列局部有序

MongoDB入门学习(四):MongoDB的索引

上一篇讲到了MongoDB的基本操作增删查改,对于查询来说,必须按照我们的查询要求去集合中,并将查找到的结果返回,在这个过程中其实是对整个集合中每个文档进行了扫描,如果满足我们的要求就添加到结果集中最后返回.对于小集合来说,这个过程没什么,但是集合中数据很大的时候,进行表扫描是一个非常恐怖的事情,于是有了索引一说,索引是用来加速查询的,相当于书籍的目录,有了目录可以很精准的定位要查找内容的位置,从而减少无谓的查找. 1.索引的类型 创建索引可以是在单个字段上,也可以是在多个字段上,这个根据自己的

Jetty学习四:部署到Jetty

Web应用的框架 标准Jetty发布版本能部署标准servlet Spec Web应用和Jetty内部ContextHandler部署描述符,或者两者的一个混合. Web应用是可部署的动态(servlets.filters.jsps.等等)和静态内容.支持库.和绑定到特定上下文路径的描写性的元数据的集合. 格式和布局最终都是通过Servlet Spec定义,你可以查阅官方Servlet Spec文档获取关于Web应用布局和结构的更多细节,这里将给出一个基本的轮廓. Web应用能被捆绑到一个单个的

重读《学习JavaScript数据结构与算法-第三版》- 第3章 数组(一)

定场诗 大将生来胆气豪,腰横秋水雁翎刀. 风吹鼍鼓山河动,电闪旌旗日月高. 天上麒麟原有种,穴中蝼蚁岂能逃. 太平待诏归来日,朕与先生解战袍. 此处应该有掌声... 前言 读<学习JavaScript数据结构与算法>- 第3章 数组,本节将为各位小伙伴分享数组的相关知识:概念.创建方式.常见方法以及ES6数组的新功能. 数组 数组是最简单的内存数据结构,用于存储一系列同一种数据类型的值. 注:虽然数组支持存储不同类型的值,但建议遵守最佳实践. 一.数组基础 创建和初始化数组 new Array

重读《学习JavaScript数据结构与算法-第三版》- 第6章 链表(一)

定场诗 伤情最是晚凉天,憔悴厮人不堪言: 邀酒摧肠三杯醉.寻香惊梦五更寒. 钗头凤斜卿有泪,荼蘼花了我无缘: 小楼寂寞新雨月.也难如钩也难圆. 前言 本章为重读<学习JavaScript数据结构与算法>的系列文章,该章节主要讲述数据结构-链表,以及实现链表的过程和原理. 链表 链表,为什么要有这种数据结构呢?当然,事出必有因! 数组-最常用.最方便的数据结构,But,当我们从数组的起点或中间插入或移动项的成本很高,因为我们需要移动数组元素. 链表,是存储有序的元素集合.链表中的元素在内存中并不

数据结构6_顺序队列(循环队列)

本文实现了顺序队列,与链队列不同的是,顺序队列需要考虑一个问题, 问题情况如下, 解决办法:循环队列,当rear到分配的数组空间末尾时,转到数组头 但是当q.rear==q.front时,又如何区分一种是空队列,一种是满队列的情况呢 这里有两种方案 本次代码实现了第一种方法,同时设置了一个技术变量length,稍加改动便可实现第二个方法 代码如下: #include<iostream>using namespace std;//该顺序队列为循环队列,解决队尾指针达到最大值,队列中有空闲单元,但

nodejs学习四 Node.js NPM

什么是NPM? 不知道大家注意没有,windows平台下的Node.js安装包大小才区区4M多,真可以用短小精悍来形容它,作为一种编程语言,像java一个SDK 就几十M,为什么node.js的运行环境这么小呢?这其中的微妙之处在于,它拥有一个庞大的第三方软件库. 在Node本身提供的包(原生)中没有我们要实现的功能模块的时候,我们可以去寻找下是否已经有人实现了这种功能.毕竟重复造轮子这种事情,很多人都不想干. 去哪里寻找我们想要的包呢?如果你还不知道报的名字,你可以去https://www.n

ZigBee学习四 无线+UART通信

ZigBee学习四 无线+UART通信 1) 协调器编程 修改coordinator.c文件 byte GenericApp_TransID; // This is the unique message ID (counter) afAddrType_t GenericApp_DstAddr; //unsigned char uartbuf[128];/********************************************************************** L