java循环结构--for,while以及do....while

时间:2022-12-13 13:45:41


1.循环的概念

(1)循环的由来:
我们写程序的时候,有时会发现很多代码都是重复的。这时我们就会想怎样才能去掉重复的代码,并保存原有的 功能,于是就产生循环这一概念。循环不像顺序结构的程序语句只能被执行一次。如果您想要同样的操作执行多 次,,就需要使用循环结构。
(2)循环的组成
A:循环体:要执行的操作。
B:初始化条件:一般地,定义的是一个初始变量。
C:判断条件:用于控制循环结束的语句。
D:控制条件:用于控制变量的变化的语句。一般是++/--操作。
(3)循环的分类:
A:for
for(初始化条件;判断条件;控制条件)
{
循环体;
}
执行流程:
a:先执行初始化条件;
b:执行判断条件;
c:根据判断条件的返回值来判断下一步的操作:
true:执行循环体。
false:结束循环。
d:最后执行控制条件,然后返回到b继续执行。
B:while
初始化条件;
while(判断条件)
{
循环体;
控制条件;
}
执行流程:
a:先执行初始化条件;
b:执行判断条件;
c:根据判断条件的返回值来判断下一步的操作:
true:执行循环体。
false:结束循环。
d:最后执行控制条件,然后返回到b继续执行。
C:do...while
初始化条件;
do{
循环体;
控制条件;
 }
执行流程:
a:先执行初始化条件;
b:执行循环体和控制条件;
c:执行判断条件
d:根据返回值
true:返回b继续执行。
false:就结束循环。
注意事项:
a:一般使用for循环或者while循环。而且这两种循环是可以等价转换的。
b:do...while循环至少执行一次循环体。
c:for循环用于知道具体循环次数,while用于不明确具体循环次数
2.案例
(1)For案例:

A:求1-100的偶数和

class SumDemo
{
public void main(String[] args)
{
int sum = 0;
for(int x=1;x<=100;x++)
{
if(x%2==0)
{
sum=sum+x;

}
}
System.out.println("1-100的偶数和是"+sum);
}
}
B:求5的阶乘

public class ForTest {
public static void main(String[] args) {
int multiply = 1;
for(int x=1;x<=5;x++){
multiply=multiply*x;
}
System.out.println("5的阶乘:"+multiply);
}
}
C:打印出所有的"水仙花数"。
   所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。例如:
   153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。 
代码如下:
class Shxh
{
public static void main(String[]aargs)
{

for(int n=100;n<1000;n++)
{
int i=n/100%10;
int j=n/10%10;
int k=n%10;
if(i*100+j*10+k==i*i*i+j*j*j+k*k*k)
{
System.out.println(n);
}

}

}
}
(2)while案例
A:用while循环求1-100之奇数和。

class WhileTest 
{
public static void main(String[] args)
{
int x = 1;
int sum = 0;

while(x <=100) {
if (x % 2 != 0) {
sum += x;
}

x++;
}

System.out.println("sum = " + sum);
}
}


B:需求:我国最高山峰是珠穆朗玛峰,8848米。现在我有一张足够大的纸,它的厚度是0.01米。
请问,我折叠多少次,可以折成珠穆朗玛峰的高度。(思考题)
思路:
A:知道初始化条件是厚度0.01米,也就是1cm。
 最终条件是8848m,也就是884800cm。
 循环体的内容是厚度每次变为以前的2倍。
 判断条件是厚度有没有超过最大值。
B:定义一个统计变量,用于记录次数。
 每当判断条件成立,我就++。
 统计变量的初始化值是0。
C:因为我不知道多少次,所以用while循环。
代码如下:

class Demo
{
public static void main(String[] args)
{
int count=0;
int start = 1;
int end = 884800;
while(start<=end)
{
count++;
start*=2;
}
System.out.println("需要折的次数"+count);
}
}
(3)do...while案例
class DoWhileDemo
{
public static void main(String[] args)
{
//需求:把一句话打印5次:Hello World!

int x = 0;
do
{
System.out.println("Hello World");
x++;
}while(x<5);
}
}
3.循环嵌套:
(1)概念:就是循环语句的循环体本身也是一个循环语句。
(2)规律:外循环控制行数,内循环控制列数。
(3)案例:九九乘法表
代码如下:

class jiuJiu
{
public static void main(String[] args)
{
for(int i=1;i<=9;i++){
for(int j=1;j<=i;i++){
System.out.print(y+"*"+x+"="+y*x+"\t")
}
system.out.println();
}
}
}
break和continue
(1)我们有时候需要对循环进行一些终止控制,因此就有了break和continue这两个关键字
(2)用法:
A:它们都必须在循环中。(break还可以用在switch中)一般都用在循环的判断中。
B:注意 如果单独使用break和continue,后面不能有语句。
(3)区别:
A:break 结束当前循环。
B:continue 结束本次循环,进入下一次循环。
(4)如何退出循嵌套环
          方法:用带标签的循环。
 格式:
标签名:for(){
for(){
if(){
break 标签名;
   }
    }
}