流程控制语句--循环结构--for循环
循环结构:for循环、while循环、do---while循环
循环语句可以在满足循环条件的情况下,反复执行某一段代码,这段被重复执行的代码被称为循环
体语句,当反复执行这个循环体时,需要在合适的时候把循环判断条件修改为false,从而结束循环,
否则循环将一直执行下去,形成死循环。
循环语句的组成
- 初始化语句:
一条或者多条语句,这些语句完成一些初始化操作。
- 判断条件语句:
这是一个boolean 表达式,这个表达式能决定是否执行循环体。
- 循环体语句:
这个部分是循环体语句,也就是我们要多次做的事情。
- 控制条件语句:
这个部分在一次循环体结束后,下一次循环判断条件执行前执行。通过用于控制循环条件中的变量,使得循环在合适的时候结束。
循环结构(for循环语句)
-
for循环语句格式:
for(初始化语句;判断条件语句;控制条件语句) {
循环体语句;
}
执行流程
- 执行初始化语句
- 执行判断条件语句,看其结果是true还是false 如果是false,循环结束。 如果是true,继续执行。
- 执行循环体语句
- 执行控制条件语句
- 回到B继续
程序示例
public class ForDemo1 {
public static void main(String[] args) {
//打印10行HelloWorld
System.out.println("HelloWorld");
System.out.println("HelloWorld");
System.out.println("HelloWorld");
System.out.println("HelloWorld");
System.out.println("HelloWorld");
System.out.println("HelloWorld");
System.out.println("HelloWorld");
System.out.println("HelloWorld");
System.out.println("HelloWorld");
System.out.println("HelloWorld");
System.out.println("==================用for循环改进==================");
// int i=1; 初始化值的作用:因为我们要打印10句HelloWorld,从第一次开始,所以
// 我们需要定义一个变量int类型的变量去开始计数,表示第几次循环。
// i<=10; 条件判断语句,这个语句使用控制是否进入循环的条件。
// i++ 控制循环体中的条件的变化,在这里表示的是,每循环一次,i++
for(int i=1;i<=10;i++){
System.out.println("HelloWorld");
}
}
}
使用for循环的注意事项
- 条件判断语句只能是boolean类型
- 当循环体的语句只有一条的时候,可以省略大括号,
如果循环体的语句有多条的时候,这时候需要添加大括号,如果不添加
循环语句只针对第一条语句有效。(建议,永远不要省略大括号) - 如果在小括号后加分号,默认有一个空语句体,后面的代码为正常的代码块,不参与循环。
- 初始化语句可以不在for循环中的小括号中体现,但是必须在使用之前定义好。
- 条件判断语句可以删除,但是删除之后,就没有了控制循环结束的条件,就变成了死循环。
- 控制条件语句删除之后,也变成了死循环,你可以删除,但是初始化的变量的值一定
要在循环体中发生变化。
------------------------------------------------------------------------
死循环示例:
for( ; ; ){ 。。。}
程序示例
public class ForDemo2 {
public static void main(String[] args) {
int i = 1; //初始化语句可以不在for循环中的小括号中体现,但是必须在使用之前定义好。
for (; i <= 10; ) { //如果在小括号后加分号,默认有一个空语句体,后面的代码为正常的代码块,不参与循环。
System.out.println("数加");
i++; //控制条件语句删除之后,也变成了死循环,你可以删除,但是初始化的变量的值一定要在循环体中发生变化。
}
}
}
例题
/*
求出1-10之间数据之和
*/
public class ForTest2 {
public static void main(String[] args) {
//定义一个变量接收和,初始值我们随便给,这里就给0,建议不要到在后面再赋值,以免忘记,程序报错。
int sum = 0;
for (int i = 1; i <= 10; i++) {
// System.out.println(i);
sum = sum + i;
}
System.out.println("从1-10的和为:" + sum);
}
}
例题
/*
偶数:能被2整除的数,叫做偶数
奇数:不能被2整除的数,叫奇数
需求1:求出1-100之间偶数和
需求2:求出1-100之间奇数和
*/
public class ForTest3 {
public static void main(String[] args) {
int sum = 0;
for (int i = 1; i <= 100; i++) {
// System.out.println(i);
//判断是否是偶数,与2进行取模,看看余数是不是等于0
if (i % 2 == 0) {
sum = sum + i;
}
}
System.out.println("1-100的偶数之和为:" + sum);
sum = 0;
for (int i = 1; i <= 100; i++) {
//判断是否是奇数,与2进行取模,看看余数是不是等于1
if (i % 2 == 1) {
sum = sum + i;
}
}
System.out.println("1-100的奇数之和为:" + sum);
}
}
例题
/*
请在控制台输出满足如下条件的五位数
个位等于万位
十位等于千位
个位+十位+千位+万位=百位
分析:
1、获取10000-99999的数据
2、获取获取个位,十位,百位,千位,万位
3、&&连接三个条件
12345 % 10 == 5 12345/10 = 1234
1234 % 10 == 4 12345/10/10 = 123
123 % 10 == 3 12345/10/10/10 = 12
12 % 10 == 2 12345/10/10/10/10 = 1
1 % 10 == 1
*/
public class ForTest5 {
public static void main(String[] args) {
for(int i=10000;i<=99999;i++){
// System.out.println(i);
//获取个位
int geWei = i%10;
//获取十位
int shiWei = i/10%10;
//获取百位
int baiWei = i/10/10%10;
//获取千位
int qianWei = i/10/10/10%10;
//获取万位
int wanWei = i/10/10/10/10%10;
if(geWei==wanWei && shiWei==qianWei && geWei+shiWei+qianWei+wanWei==baiWei){
System.out.println(i);
}
}
}
}