目录
while循环
首先我们先看while循环的基本语法
while循环基本语法
while(循环条件){
循环体;
循环变量迭代;
}
注意:while循环也有四要素,只不过相比较与for循环位置不同
while循环的特点:先判断后执行
while循环和for循环一样,都是循环的执行操作,我们开看看,while循环的基本使用
代码演示:
while的死循环要搭配break去使用后面会讲到break
package com.sequentialcontrol.while_;
/**
* 演示while循环的基本使用
*/
public class while01 {
public static void main(String[] args) {
//演示while循环的基本使用
int i = 1;
while (i <= 100) {
System.out.println(i);
i++;
}
//该循环就是输出1-100之间的数字,执行流程是先判断i的值是否小于100,如果满足条件进入循环,不满足则不会进入循环,程序会继续往下执行
//这就是一个死循环,会一直输出
while (true){
System.out.println("hello,word");
}
}
}
while循环例题
例题演示:
这是最简单的两个题目,后面会有难一点的题目
第一题思路分析:
1.首先我们先输出1-100之间的方式,使用while循环的方式实现
2.题目要求我们输出1-100之间能被3整除的数,那么我们只需要在加一个if判断即可
第二题思路分析:
1.首先我们要输出40-200之间的数字,那么我们初始化i的时候就应该初始化为40
2.他要我们输出的是偶数,那么就用j去模2如果等于0说明该数字就是偶数,我们就输出,并且让j++
package com.sequentialcontrol.while_;
/**
* 演示while循环的例题
*/
public class whileExercise {
public static void main(String[] args) {
//最基本的例题
//打印1到100之间能被3整除的数
int i = 1;
while (i <= 100) {
if (i % 3 == 0) {
System.out.print(i + " ");
}
i++;
}
//打印40-200之间所有的偶数
int j = 40;
while (j <= 200) {
if (j % 2 == 0) {
System.out.print(j + " ");
}
j++;
}
}
}
do while循环
看看while循环的基本语法
基本语法
do{
循环体;
循环遍历迭代;
}while(循环条件);
注意事项:
1.do while 是关键字
2.do while 循环也有四要素,只不过位置不相同
3.do while 循环是先执行后判断,也就是说do while 循环一定会执行一次
4.while 循环和do while循环的区别
代码演示:
结论 .while 循环和do while循环的区别 do while 循环是先执行后判断,也就是说do while 循环一定会执行一次 首先我们先说两种循环的特点 while while循环的特点是先判断后执行 do while 特点是,先执行后判断
在案例中,充分的演示了while循环和do while 循环的区别和特点,在开发中,可以根据业务需求,灵活的选择
package com.sequentialcontrol.dowhile_;
/**
* 演示 do while循环的基本操作
*/
public class doWhile01 {
public static void main(String[] args) {
//结论
//.while 循环和do while循环的区别
//do while 循环是先执行后判断,也就是说do while 循环一定会执行一次
//首先我们先说两种循环的特点
//while while循环的特点是先判断后执行
//do while 特点是,先执行后判断,看演示
//案例演示
//定义一个布尔类型的变量
boolean loop = false;
//如果是while循环,会先判断循环条件。是否成立,loop的初始值就是false,因此不会输出hello,word
while (loop) {
System.out.println("hello,word");
}
//演示do while
//do while 循环的特点是,不管什么先执行后判断,因此该循环会输出一句hello,word 输出完之后,再去判断条件,发现不满足条件,就不会在进入循环了
do {
System.out.println("hello,word");
} while (loop);
}
}
do while循环例题
第一天思路分析:
.题目要求我们输出1-200之间的数,那么我们i的初始值就应该定义为1,循环的条件就应该是i<=200,然后,他要我们输出能被5整除,不能被3整除,只要增加一个if条件即可,只有满足这个条件,我们才去输出这个数
package com.sequentialcontrol.dowhile_;
public class doWhileExercise {
public static void main(String[] args) {
//统计1到200之间能被5整除不能被3整除的数
int i = 1;
do {
if (i % 5 == 0 && i % 3 != 0) {
System.out.println(i);
}
i++;
} while (i <= 200);
}
}
多重循环
多重循环顾名思义就是很多循环体嵌套在一起,一般不要超过3层的循环嵌套,
这就需要用到我们之前学习的for循环while循环和do while循环了
多重循环例题
思路分析
1.把统计每个班级总分的变量定义在外层循环的第一行,这样当第一次循环结束后,该变量又会被重新置成0,因此在第二次循环的时候,统计的就是第二个班级的总分,并且在每次统计完一个班级的总分的时候,输出每个班级的平均分,并且把该成绩,累加到在外定义的一个存放所有班级成绩总和的变量中
代码演示
package com.sequentialcontrol;
import java.util.Scanner;
/**
* 演示多重循环例题
*/
public class MultipleLoopsExercise {
public static void main(String[] args) {
//1.统计三个班级成绩情况,每个班五个同学求各班级的
//平均分和所有班级的平均分学生成绩从键盘输入
//统计及格人数
//思路分析
//1.根据题目来看成绩需要我们从键盘输入,那么就是需要创建一个scanner对象用来输入成绩
//创建一个scanner对象接受用户的输入
Scanner scanner = new Scanner(System.in);
double totalScore = 0;//该变量用用于存储所以班级的总成绩
int count = 0;//统计几个的人数
//因为是三个班级每个 班级五个学生,因此外层循环是3,内层循环是5
for (int i = 1; i <= 3; i++) {
double sum = 0;//该变量用于存储每个班级的总分
for (int j = 1; j <= 5; j++) {
System.out.println("第" + i + "个班第" + j + "个同学的成绩");
double score = scanner.nextDouble();//接受输入的成绩
if (score >= 60) {//如果输入的成绩,大于等于60说明成绩及格了,那么就count++统计几个的人数
count++;
}
//当内层循环结束后,sum存放就是第一个班级的总分,然后紧接着在退出到外层循环,输出每个班级的平均分,并把一个班级的总分累加到totalScore该变量是存放所有班级总分的。
// 当一次循环结束后又重新把sum设置成了0,第二次的循环,统计的就是第二个班级学生的总分,这样当三层循环结束后,就完成了题目的要求
sum += score;
}
System.out.println("第" + i + "个班级的平均分为" + sum / 5);//求每个班级的平均分
totalScore += sum;//把每个班级的总分累加到,统计所有班级总分的变量中
}
System.out.println("所有班级的平均分为" + totalScore / 15);
System.out.println("及格人数为" + count);
}
}
例题2打印空心金字塔
思路分析
//1.我们先从最简单的开始,打印一个金字塔
//2.因为是打印空心金字塔,只需要在内存循环中,增加if条件判断即可 根据规律我们知道,只有每一行的第一列和最后一列都是*号,还有最后一行也都是*号, //那么只需要增加if条件判断 判断只有第一列和最后一列和最后一行都是*号,其他都输出空格,这样即可完成效果
package com.sequentialcontrol.while_;
/**
* 打印空心金字塔
*/
public class start {
public static void main(String[] args) {
//思路分析
//1.我们先从最简单的开始,打印一个金字塔
int n = 5;//定义金子塔的行数
for (int i = 1; i <= n; i++) {
for (int k = 0; k < n - i; k++) {
System.out.print(" ");
}
for (int j = 1; j <= 2 * i - 1; j++) {
System.out.print("*");
}
System.out.println();
}
//2.因为是打印空心金字塔,只需要在内存循环中,增加if条件判断即可 根据规律我们知道,只有每一行的第一列和最后一列都是*号,还有最后一行也都是*号,
//那么只需要增加if条件判断 判断只有第一列和最后一列和最后一行都是*号,其他都输出空格,这样即可完成效果
for (int i = 1; i <= n; i++) {
for (int k = 0; k <= n - i; k++) {//该循环是用来输出,*号之前的空格的规律正好是行数n减去i
System.out.print(" ");
}
for (int j = 1; j <= 2 * i - 1; j++) {//就是输出*号
if (j == 1 || i == n || j == 2 * i - 1) {//根据条件
System.out.print("*");
} else {
System.out.print(" ");
}
}
System.out.println();
}
}
}