3.循环结构
当条件满足,将一直循环下去的语句就叫做循环语句。假设小美买彩票没中奖,只要小美买彩票没中奖,那么她就会每天买,只要她中奖了则就会停止购买,这就叫做循环
3.1 while 循环语句
public class Test { public static void main(String[] args) { int a = 1; while(a <= 10) { System.out.printf("%d ",a); a++; } } }
执行结果:
上述代码循环语句首先执行 while 后面的判断表达式,如果结果为 true 则执行循环体,然后再判断 while 后面的判断表达式,如果结果为 true 则继续执行循环体,...,直到 while 后面的判断表达式结果为 false 则退出循环
如果上述代码中没有 a++ 则会造成死循环
所以循环一共有三部分,分别是:初识值,结束条件,接近结束条件的变化
3.2 break
break:如果在循环体里面,则直接跳出循环。如果在多分支里面,则跳出多分支
public class Test { public static void main(String[] args) { int a = 1; while(a <= 10) { if(a == 7) { break; } System.out.printf("%d ",a); a++; } } }
运行结果:
执行到 break 就会让循环结束
上述代码执行逻辑,先执行 while 后面的判断表达式,如果为 true 则循环体,循环体里面判断选择语句是否为 true ,如果为 true 则直接跳出循环,否则继续往下执行
3.3 continue
continue 直接结束本次循环,不会直接跳出循环
public class Test { public static void main(String[] args) { int a = 1; while(a <= 10) { a++; if(a == 7) { continue; } System.out.printf("%d ",a); } } }
执行结果:
上述代码执行逻辑,先执行 while 后面的判断表达式,如果为 true 则循环体,循环体里面判断选择语句是否为 true ,如果为 true 则跳出本次循环,继续执行下一次循环
注意:
public class Test { public static void main(String[] args) { int a = 1; while(a <= 10) { if(a == 7) { continue; } a++; System.out.printf("%d ",a); } } }
一样的代码,可能顺序不一样最后的结果也就不一样。这个代码就因为 a++ 在选择语句的后面就造成了死循环,当 a == 7 时,跳出本次的循环,也就是本次循环 if 语句以下的语句是不会执行的。那么这次循环并没有执行到 a++,那么 a 的值还是 7,进入循环遇到 if 语句执行 continue,又结束了本次循环但 a 还是 7,因此就造成了死循环
注:代码语句顺序还是很重要滴
3.4 for 循环
语法格式:
表达式①:用于给循环变量设置初始值, 在程序开始时是便会执行,且只会执行一次
表达式②:循环条件的判断,如果判断为 true 则继续执行循环体,否则循环结束
表达式③:循环变量更新方式
for 循环的执行过程:
首先执行表达式①,然后判断表达式②,如果为真则执行表达式④(否则直接退出循环),然后在执行表达式③
判断表达式②,如果为真则执行表达式④(否则退出循环)。然后在执行表达式③
跟 2 的顺序一样,直到表达式②为false,退出循环
public class Test { public static void main(String[] args) { for (int i = 1; i <= 10;i++) { System.out.printf("%d ",i); } } }
执行结果:
for 下面的语句可以不写 { } , 但是不写的时候只能支持一条语句. 建议还是加上 { }
for 后面的 { 建议和 for 写在同一行.
for 后面不要多写 分号, 否则可能导致循环不能正确执行.
和while循环一样,结束单趟循环用continue,结束整个循环用break
3.5 do...while 循环
do...while循环又叫做直到型循环,它是先执行后判断
语法格式:
先执行循环语句, 再判断循环条件,循环条件为 true 则继续执行,否则循环结束
public class Test { public static void main(String[] args) { int i = 1; do { System.out.printf("%d ",i); i++; }while (i <= 10); } }
执行结果:
注:do while 循环最后的分号不要忘记
4.输入输出
4.1 输出
public class Test { public static void main(String[] args) { int a = 1; System.out.println(a);//输出加换行 System.out.print(a);//输出不换行 System.out.printf("%d",a);//格式化形式输出 } }
输出结果:
println:输出,加换行
print:输出,不换行
printf:格式化形式输出
所以最好两个打印打印到一行了。
4.2 输入
使用 Scanner 读取字符串/整数/浮点数
在使用 Scannery 之前需要导入 util 包
后面学习了类就自然理解了为什么要导入 util 包了
import java.util.Scanner; public class Test { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int a = scanner.nextInt(); System.out.println(a); } }
大家现在只需要记住在使用类之前需要new一个对象,也就是在使用Scanner 之前需要 new 一个Scanner ,然后才能通过 scanner 这个对象去使用