Java基础知识(三)
循环结构
1、对于某些相同后者相似的代码,需要反复的执行,可以使用循环结构减少代码的编写
2、代码写的少,程序运行的多
3、分类
for【常用】
while【常用】
do while
for循环
1、格式
for(初始化语句;循环条件表达式;变量的自增) {
循环体语句;
}
for(int i = 0; i < 10;i++) {
System.out.println(“你好”);
}
2、执行流程
1、执行初始化语句,只会执行一次,定义一个变量
2、判断循环条件表达式,循环条件表达式的结果必须是boolean类型,要么是true,要么是false
3、如果是false的话,for循环结束
4、如果是true的话,执行循环体语句(要重复执行的代码)
5、执行变量的自增,变量可以自增也可以自减,同时还可以自增自减多步
6、在回到第二步
3、说明
初始化语句只会执行一次
循环体语句,控制循环的次数
变量的自增,一定是向循环结束的方式自增的
循环体语句,不断循环的代码
class Demo01_for循环 {
public static void main(String[] args) {
//打印5句你好
for(int i = 0; i < 100; i++) {
System.out.println("你好");
}
}
}
练习
1、打印数字1-5
2、打印数字5-1
3、求1-100之间的和
4、求1-100之间的偶数和
class Demo02_for循环练习01 {
/*
1、打印数字1-5
2、打印数字5-1
3、求1-100之间的和
4、求1-100之间的偶数和
*/
public static void main(String[] args) {
//第一题
/*for(int i = 1; i <= 5; i++) {
System.out.println(i);
}*/
//第二题
/*for(int i = 1; i <= 5; i++) {
System.out.println(6 - i);
}*/
/*for(int i = 5; i >= 1; i--) {
System.out.println(i);
}*/
//第三题
/*int sum = 0;
for(int i = 1; i <= 100; i++) {
sum += i;
}
System.out.println(sum);*/
/*int sum = 0;
for(int i = 1; i <= 100; i++) {
if(i % 2 == 0) {//偶数
sum += i;
}
}
System.out.println(sum);*/
//第四题
int sum = 0;
for(int i = 2; i <= 100; i += 2) {
sum += i;
}
System.out.println(sum);
}
}
5、列举所有的四叶玫瑰数,并统计四叶玫瑰数的个数
四叶玫瑰数:是一个四位数,各个位上的四次方和等于该数字本身
class Demo03_四叶玫瑰数01 {
public static void main(String[] args) {
int count = 0;
for(int i = 1000; i < 10000; i++) {
//求出i的个位十位百位千位
int ge = i % 10;
int shi = i / 10 % 10;
int bai = i / 100 % 10;
int qian = i / 1000;
if(ge * ge * ge * ge + shi * shi * shi * shi + bai * bai * bai * bai + qian * qian * qian * qian == i) {
System.out.println(i);
count++;
}
}
System.out.println("四页玫瑰数的个数:" + count);
}
}
for循环的注意事项
1、for循环中初始化语句声明的i只能在for循环中进行使用,出了for循环就不能使用了
2、如果语句体只有一句的话,大括号可以省略不写,建议任何使用都要加上大括号,如果不写,只能控制第一句语句体
3、在左大括号前面不要加上分号,有左大括号就没有分号,加上分号之后,for循环就控制不了语句体
class Demo04_for注意事项 {
public static void main(String[] args) {
/*int j = 10;
for(; j <= 11; j++) {
System.out.println("你好");
}*/
/*for(int i = 10; i <= 11; i++) {
System.out.println("你好");
}
//System.out.println(i); 报错,变量i只能在for循环中进行使用*/
//只会打印一次你好,加上分号之后,for循环控制不了语句体
/*for(int i = 1; i <= 100; i++); {
System.out.println("你好");
}*/
//如果不写大括号,只能控制第一句语句体 打印10次你好,和一次我很好
for(int i = 1; i <= 10; i++)
System.out.println("你好");
System.out.println("我很好");
}
}
while循环
1、格式
初始化语句;
while(循环条件表达式) {
循环体语句;
变量的自增;
}
int i = 0;
while(i < 5) {
System.out.println(“你好”);
i++;
}
2、执行流程
1、执行初始化语句,只执行一次
2、判断循环条件表达式,结果必须是boolean类型,要么是true要么是false
3、如果是false的话,while循环结束
4、如果是true的话,执行循环体语句
5、执行变量的自增,变量可以自增也可以自减
6、在回到第二步
3、不要忘记变量的自增,如果不写的话,导致死循环
4、定义的初始化语句,不仅可以在while循环中使用,还可以在整个main方法中进行使用
class Demo05_while循环 {
public static void main(String[] args) {
//打印5句你好
int i = 100;
while(i <= 104) {
System.out.println("你好");
i++;
}
//出了while循环,i还可以继续使用
System.out.println(i);
}
}
dowhile循环
1、格式
初始化语句;
do {
循环体语句;
变量的自增;
}while(循环条件表达式);
2、执行流程
1、执行初始化语句
2、执行循环体语句
3、在执行变量的自增
4、判断循环条件表达式,返回结果是boolean,要么是true,要么是false
5、如果是false的话,dowhile循环结束了
6、如果是true的话,回到第二步
3、如果条件不满足的话,while和for循环有可能一次都不会执行语句体,dowhile最低要执行一次
class Demo06_dowhile循环 {
public static void main(String[] args) {
//打印5句你好
int i = 0;
do {
System.out.println("你好");
i++;
}while(i < 5);
for(int j = 0; j >= 100; j++) {
System.out.println("我很好");
}
}
}
死循环
1、死循环不是程序中的错误,循环永远都不会停止
2、有些需求要用来死循环
键盘录入,猜数字游戏,不知道用户要猜多少次,这时候考虑用到死循环,当用户猜对之后,通过跳转语句将死循环结束掉
class Demo07_死循环 {
public static void main(String[] args) {
/*for(int i = 0; i <= 1; i--) {
System.out.println("Hello World!");
}*/
/*for(;;) {
System.out.println("你好");
}*/
while(true) {
System.out.println("你好");
}
}
}
跳转语句
1、用来结束循环
2、continue 结束本次循环,继续下次循环
3、break 结束当前层次的循环
4、return 结束当前方法
5、System.exit(0); 结束虚拟机
class Demo08_跳转语句 {
public static void main(String[] args) {
for(int i = 1; i <= 10; i++) {
if(i % 3 == 0) {
// 结束本次循环继续下次循环
//continue; //1 2 4 5 7 8 10 你好
//结束当前层次循环
//break; //1 2 你好
//结束当前方法
//return; //1 2
//System.exit(0); 1 2
}
System.out.println(i);
}
System.out.println("你好");
}
}
循环嵌套
1、在一个循环中,循环体语句又是一个复杂的操作(还是在一次循环),叫做循环的嵌套
2、格式
for(初始化语句1; 循环条件表达式1;变量的自增1) {
for(初始化语句2;循环条件表达式2;变量的自增2) {
循环体语句;
}
}
3、执行流程
1、执行初始化语句1,只执行一次
2、判断循环条件表达式1,要么是true,要么是false
3、如果是false的话,循环嵌套结束
4、如果是true的话,执行内层循环
5、内层循环执行完成之后,在执行变量的自增1
6、回到第二步
7、外层循环循环一次,内层循环就循环一遍
class Demo11_循环嵌套 {
public static void main(String[] args) {
for(int j = 1; j <= 3; j++) {
for(int i = 1; i <= 5; i++) {
System.out.println("跑圈。" + "j =" + j + "。i = " + i);
}
}
}
}