循环结构-语法
流程控制语句中的一种,循环有一定难度(转弯)。
1. 掌握while循环结构
// while:当....的时候 和if选择结构很相像
// 多次的判断 循环条件
while(条件表达式){
// 循环操作/循环体
}
// if只会执行一次判断
if(条件表达式){
// 执行内容
}
一个循环必然包括循环条件和循环操作(循环体),在遇到一个需求的时候,如果考虑用循环解决,必须首先将这两个部分识别出来。
/**
* 需求:模拟打印50份试卷
* 循环条件:打印完50份
* 循环操作:打印试卷
*/
public class Demo2 {
public static void main(String[] args) {
// 初始化【循环变量】
int i = 1;
// 套用while循环语法
// 循环条件
while(i <= 50) {
// 循环体
System.out.println("正在打印第"+i+"份试卷!");
// 更新循环变量【循环出口】 必须有这种更新变量的过程 否则循环称为死循环
i ++;
}
}
}
while循环的组成(四要素):
- 循环变量的初始化:如果没有它 无法进行判断(编写条件表达式)
- 循环的条件:循环满足什么条件时执行
- 循环操作:循环中应该进行的重复操作
- 循环变量的更新:如果不进行变量更新,那么变量不会进行改值,会造成循环条件一直满足,出现死循环。
/**
* 需求:要求完成学习任务 检查是否合格 如果合格则停止 不合格继续完成学习任务。
* 循环条件:不合格 就继续
* 循环操作:完成学习任务
*/
public class Demo3 {
public static void main(String[] args) {
// 使用Scanner来进行是否合格的输入
Scanner input = new Scanner(System.in);
System.out.print("史浩然的学习任务是否合格?(y/n):");
// 1.循环变量的初始化
String isPass = input.next();
// 2.循环条件
// 先记住:字符串不能使用==来比较内容相同(关系到引用数据类型的问题 后期讲解)
// 字符串比较内容相同:equals()
while("n".equals(isPass)) {
// 3.循环操作
System.out.println("上午阅读教材,下午上机编程!");
// 4.循环出口
System.out.print("史浩然的学习任务是否合格?(y/n):");
isPass = input.next();
}
System.out.println("任务完成!等级提升!");
}
}
2. 掌握do-while循环结构(前期常用)
// 初始化循环的变量
do{
// 循环操作
// 循环出口
}while(循环条件);
/**
* 需求:要求完成学习任务 检查是否合格 如果合格则停止 不合格继续完成学习任务。
* 循环条件:不合格 就继续
* 循环操作:完成学习任务
*/
public class Demo1 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
// 初始化循环变量
String isPass;
do {
// 循环操作
System.out.println("上午阅读教材,下午上机编程!");
// 循环出口
System.out.print("史浩然的学习任务是否合格?(y/n):");
// 变量的作用域(生效的范围) 变量的作用域和其直接所属的{}有关
isPass = input.next();
}while("n".equals(isPass)); // 循环条件
System.out.println("任务完成!等级提升!");
}
}
while和do-while的区别?
语法不同:
while(循环条件){
// 循环操作
}
do{
// 循环操作
}while(循环条件);
运行时机不同:
while是先判断再执行。
do-while是先执行再判断。
当第一次条件不成立时,while不会执行!而do-while无论是否成立都至少会执行一次!
3. 掌握for循环结构(后期非常普遍)
for循环只能用于固定循环次数的场景。
for(1;2;3){
4
}
1:初始化循环的变量
2:循环条件
3:更新循环变量
4:循环体
1 2 4 3 2 4 3 2 4....
4. 掌握多重循环的使用
一个循环结构中可以嵌套其他两种循环结构,嵌套多少层和多少个都可以,一般不会超过两层!所以多重循环又往往被称为叫双重循环。
外层循环执行一次,内层循环执行一遍/轮
。
for(){ // 外层循环
for(){ // 内层循环
}
如果在打印图形的时候,先看有几行,外层循环控制打印几行
。
再看有几列,内层循环控制每列打印的内容
。
5. 掌握循环中的跳转语句使用
一会break和标志位做对比。
switch(){
case 常量1:
break;
....
}
掌握continue和break的区别
break:退出当前
循环! 如果出现在多重循环的内层循环中,不会退出外层循环,只会退出当前循环。
continue(继续):结束本次循环(后面的代码不执行了),进入下一次循环。
break可以出现在switch选择结构和循环结构中,continue只能出现在循环中。
利用continue和break实现重复输入:
6. 掌握程序调试(debug/断点调试)
到达循环之后,程序不再是很直观就能推断出结果了!所以需要我们运行时慢慢查看。
**要求:**如果你来问我问题,首先应该保证你已经debug过了!
-
添加断点(break point) -> 双击行号 / 右键添加
断点:你希望程序在哪行代码开始进行调试/暂停/中断执行
不要添加在注释行 或者 一些输入上 或者语法声明上(类声明、方法声明、循环、选择声明)!
-
右键debug as以调试形式运行 ,运行之后,程序会在断点处停止,此时
这行代码
处于将要执行还未执行的状态。不要使用run as
-
可以按下F6(Step Over)执行当前行代码,并进入下一行
-
可以在一行一行调试的过程中,随时切换断点的位置!并且可以随时按下F8(Resume)快速放行到下一个断点,如果没有下一个断点,程序会直接运行至结束。
-
(了解)
按下F5(Step Into),它可以进入方法内查看运行。 -
如果在调试过程中发现问题,随时可以中断进行修复解决。