While循环结构
- while循环
- do…while循环
- for循环
- 在Java5中引入了一种主要用于数组的增强型for循环。
在选择结构与顺序结构中程序只能运行一遍但是在现实生活中很多程序都必须无休止的运行,所以我们需要有一种结构来让程序循环运行。所以有了while循环
while循环
while是最基本的循环
语法
while(布尔表达式){
//循环内容
}
判断一个表达式成立就一直跑。
要求
-
只要布尔表达式为true,循环就会一直执行下去。
-
我们大多数情况是会让循环停止下来的,我们需要一个让表达式失败的方式来结束循环
-
少部分情况需要循环一直执行,比如服务器请求响应监听等
-
循环条件一直为true就会造成无限循环【死循环】,我们正常的业务中应该尽量避免死循环会影响程序性能或者造成程序卡死崩溃!
例
思考:计算1+2+3+…+100
public class amy05 { public static void main(String[] args) {
int i=0;
int sum=0;
while (i<=100){
sum=sum+i;//给自己累加一个i
i=i+1;
}
System.out.println(sum);
}
}
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3r4EtwfT-1632646824854)(D:\JAVA学习图片\Java流程控制\025.png)]
死循环
public class amy06 { public static void main(String[] args) {
//死循环
while (true){
//等待客户端连接
//定时检查
}
}
}
循环会一直运行
DO…While循环
- 对应while而言,如果不满足条件,则不能进入循环。但有时候我们需要即使不满足条件也要至少执行一次。
- do…while循环和while循环相似,不同的是,do…while循环至少会执行一次
语法
do{
//代码语句
}while(布尔表达式);
public class amy05 { public static void main(String[] args) {
int i=0;
int sum=0;
do {
sum=sum+i;
i++;
}while (i<=100);
System.out.println(sum);
}
}
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-L7SvOhHD-1632646824855)(D:\JAVA学习图片\Java流程控制\026.png)]
区别
while先判断后执行,do…while是先执行后判断!
do…while总是保证循环体会被至少执行一次!这是他们的主要区别
public class amy05 { public static void main(String[] args) {
int i=0;
int sum=0;
while (i<0){
System.out.println(i);
}
System.out.println("******************************************************************************");
do {
System.out.println(sum);
}while (sum<0);
}
}
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HIGMZX6F-1632646824856)(D:\JAVA学习图片\Java流程控制\027.png)]
由运行图可以看出分割线上面的while循环的代码并没有输出。
而分割线下面的do…while循环的代码输出了
for循环(重点)
-
虽然所有循环结构都可以用while或者do…while表示,但是Java提供了另外一种语句——for循环,使一些循环结构变得简单
-
for循环语句是支持**迭代 **的一种通用结构,是最有效,最灵活的循环结构
-
for循环执行的次数是在执行前就确定的
语法
for(初始化;布尔表达式;更新){
//代码语句
}
示例
先通过一个while循环理解循环语句
public class amy07 {public static void main(String[] args) {
int a=1;//初始化条件
while (a<=100){//条件判断
System.out.println(a);//循环体
a+=2;//a=a+2//迭代
}
System.out.println("循环结束");
for (int i=1;i<=100;i++){
//初始化值//条件判断//迭代
System.out.println(i);
}
System.out.println("for循环结束");
}
}
快捷键
100.for自动生存for循环
注意点
最先执行初始化步骤。可以申明一种类型。但 可初始化一个或多个循环控制变量,也可以是空语句。然后,检测布尔表达式的值,如果为true,循环体被执行,如果为false,循环终止,开始执行循环体后的语句。
执行一次循环后,更新循环控制变量(迭代因子控制循环变量的增减)。再次检测布尔表达式执行上面的过程。
for死循环 //死循环 for( ; ;){ }
上述代码也能执行因为没有判断语句,循环会进入死循环
练习
习题一
:计算0到100之间的奇数和偶数的和
public class amy08 {public static void main(String[] args){ int oddsum=0;//奇数 int evensum=0;//偶数 for (int i = 0; i < 100; i++) { if (i%2!=0){//奇数//求余运算 oddsum+=i; }else {//偶数 evensum+=i; } } System.out.println("奇数的和"+evensum); System.out.println("偶数的和"+oddsum); }}
习题二
:用while或for循环输出1-1000之间能被5整除的数,并且每行输出三个
public class amy08 {public static void main(String[] args){//用while或for循环输出1-1000之间能被5整除的数, int d=1; for (int i = 0; i <=1000; i++) { if (i%5==0){ System.out.print(i+"\t"); }if (i%15==0){//每行输出三个 System.out.print("\n"); } } }}
习题二注意点
println与print的区别
println:输出完之后会换行
print:输出完之后不会换行
\n:换行符C语言有学
习题三
:打印九九乘法表
public class amy08 {public static void main(String[] args) {//打印九九乘法表 for (int i = 1; i <= 9; i++) { for (int j =1; j <= i; j++) {//秒呀! System.out.print(j+"*"+i+"="+(j*i)+ "\t"); /*如果换成("=j*i"+(j*i)+ "\t"); 只会出现i和j的因为""内输出的是字符串 \t是为了产生空格 */ } System.out.println(); } } }
习题三解题方法
- 先打印第一列
- 我们把固定的1再用一个循环包裹起来
- 去掉重复项。巧妙利用判断条件。(i<=j)
- 调整样式
增强for循环
-
在这里我们先只是见一面,做个了解,之后在数组中重点使用
-
java5引入了一种主要用于数组或集合的增强型for循环。
-
java增强for循环语法格式如下
for(声明语句:表达式){ //代码句子}
public class amy08 {public static void main(String[] args) { int[] numbers={10,20,30,40,50};//定义了一个数组 for (int x:numbers){ System.out.println(x); } } }