循环结构
-
while 循环
-
do…while 循环
-
for 循环
顺序结构只能执行一次,循环结构可以无限执行
-
在Java5中引入了一种主要用于数组的增强型for循环。
while 循环
-
while是最基本的循环,它的结构为:
while(布尔表达式){ //循环内容 }
-
只要布尔表达式为true,循环就会一直执行下去
(只要布尔表达式条件为真,就会一直走下去)
-
示范
package struct;
public class WhileDay01 {
public static void main(String[] args) {
//输出1~100
int i = 0;
while (i<100) {
i++;
//i++ i+1 先赋值在+1
System.out.println(i);
}
}
}
我们先输入一个i=0. 然后再用while循环 while(布尔表达式){
循环条件 }进行
while的循环条件是布尔表达式必须为true。
我们需要输出的内容是1~100.
可以在布尔表达式里面输入, “i<100”
意思是i小于100
然后我们在循环条件里面输入i++
意思i自增当然**++i也可以**
这样整段代码
int i = 0;
while (i<100) {
i++;
//i++ i+1 先赋值在+1
System.out.println(i);
}
然后我们输出一下,
就是1~100了
整片代码的意思是
i=0时, while(i<100) //条件成立,为true, 代码执行 {
i++ //执行代码i++ i++:先赋值,在自增 (当然++i也可以)
}
System.out.println(i);
输出i i=0 小于100 代码执行 i++ i+1(0+1)= 1
再次循环 i=1
然后i=2
以此推类
死循环
package struct;
public class WhileDay02 {
public static void main(String[] args) {
//死循环
while (true) {
//等待客户端连接 //(true)意思是永远是对的,一直执行
//定时检查
//..............
}
}
}
-
while(true)里面为true的时候,将视为可执行
然后就会一直无限循环的执行下去
思考一下
计算1+2+3+…+100=?
等于多少该怎么用代码计算
示列
package struct;
public class WhileDat03 {
public static void main(String[] args) {
//计算1+2+3+...+100=?
int i = 0;
int sum = 0;
while (i<=100) {
sum = sum + i;
i++;
}
System.out.println(sum);
}
我们先设置一个int类型的i 和sum分别为零
然后再谁知while(i<=100) //因为1+2+3…+100 是有100的所以,需要<=
然后再循环内输入,sum(和)= sum + i ;
再输入一个i++; 目的是让i没循环一次,就+1
这样,我们在运行一下sum 答案等于5050
do…while 循环
- 对于while语句而言,如果不满足条件,则不能进入循环,有时候我们需要不满足条件,至少执行一次,所以就有了do…while 循环,他很while循环相似,不同的是do…while循环至少会执行一次
语句
do{
//代码语句
}while(布尔表达式);
while和do…while的区别:
-
while先判断后执行,do…while先执行后判断!
-
Do…while总是保证循环体会被至少执行一次!这是他们的主要差别
示范
package struct; public class DoWhileDay02 { public static void main(String[] args) { int a = 0; while(a<0) { System.out.println(a); a++; } System.out.println("==========================="); do { System.out.println(a); a++; }while(a<0); } }
运行一下,得出结构
为什么只有分割线下面有0的原因是
while(a<0)执行循环一次,但是有a++,此时a=1大于0.无法执行
do…while(a<0)是先执行一次,在判断
所以分割线下面的do…while(a<0)运算出来了
For 循环,程序中用到最多的循环★(重点)
语法格式
for(初始化;布尔表达式;更新){
//代码语句
}
示列
package struct;
public class ForDay01 {
public static void main(String[] args) {
int a = 1;//初始化条件
while(a<=100) {//条件判断
System.out.println(a);//循环体
a += 2;// a = a+2 的意思 //迭代
}
System.out.println("while循环结束!");
//初始化值//条件判断//迭代
for(int i = 1;i<=100;i++) {
System.out.println(i);
}
System.out.println("for循环结束!");
}
}
运算一下,最后for循环跟while循环一下
初始化:int i = 1;
条件判断:i<=100;
更新:也是 迭(die 第三声)代 就是i++ 或者 a +=2
for 循环语句是支持迭代的一直通用结构,是最有效、最灵活的循环结构。
for循环注意
/*
* 关于for循环的几点说明:
* 最先执行初始化步骤。可以声明一种类型,但可初始化一个或多个循环控制变量,也可以是空语句。
* 然后,检测布尔表达式的值。如果为true,循环继续进行,如果为false。循环终止,开始执行循环后面的语句
* 执行一次循环后,更新循环控制变量(迭代因子控制循环遍历的增减)
* 再次检测布尔表达式。循环执行上面的过程.
* */
for(;;){
}
带for循环没有任何值的时候,会变成一个死循环
因为没有布尔表达式,没有迭代,会一直执行下去**!!!!!!**
不相信的你们可以试一下
for循环练习
练习1:计算0到100之间的奇数与偶数的和
示
package struct;
public class ForDay02 {
public static void main(String[] args) {
//练习1:计算0到100之间的奇数与偶数的和
int oddSum = 0; //保存奇数的和
int evenSum = 0; //保存偶数的和
//如果int i = 0 那么i<100成立, 就走循环的路
for (int i = 0;i<=100;i++) {
if(i%2!=0) { //奇数 //% 是模运算 //!= 是不等于的意思
oddSum+=i; //oddSum= oddSum+i
}else { //偶数 //else : 反之
evenSum+=i; //evenSum=everSum+i
}
}
System.out.println("奇数的和:"+oddSum);
System.out.println("偶数的和:"+evenSum);
}
}
if(i%2!=0)
//%是模运算,用来求余数的
1/2=0.5 余数是5 不等于0 所以是奇数
2/2=1.0 余数是0 等于零 所以是偶数
练习2:用while或for循环输出1-1000之间能被5整除的数,并且每行输出3个
示列
package struct;
public class ForDay03 {
public static void main(String[] args) {
//练习2:用while或for循环输出1-1000之间能被5整除的数,并且每行输出3个
for (int i = 1;i<=1000;i++) {
if(i%5==0) {
System.out.print(i+"\t");
}
if(i%(5*3)==0) { //每行
System.out.println();
//System.out.print("\n");
}
//println 输出完会换行
//print 输出完不会换行
}
}
}
1000里面被5整除的数字的方法
这里if(i%5==0)也是跟上面一样
只有5的倍数才可以等于0
每行3个之后就换行的方法
但是下面的if(i%(5*3)==0)
代码是按照从上往下的顺序执行的,所以上面代码执行完之后,输出的只有5的倍数的数字了,
然后if(i%(5*3)==0) 的意思是,数字被15整除之后,余数为零就执行这行代码
System.out.println();是换行的意思
println是 输出完会换到下一行
print是输出完,不会换行,继续输出下去
System.out.print(i+"\t"); 那个\t的意思是空格