摘要:循环语句可以在满足循环条件的情况下,反复执行某一段代码,这段被重复执行的代码被称为循环体语句,当反复执行这个循环体时,需要通过修改循环变量使得循环判断条件为false,从而结束循环,否则循环将一直执行下去,形成死循环。
一. for 循环
for(初始化语句①; 循环条件语句②; 迭代语句④){
循环体语句③
}注意:
(1)for(;;)中的两个;是不能多也不能少
(2)循环条件必须是boolean类型
案例-取余计算:
public class ForCase1 {
// int i=1 表达式1 初始化执行1次
// i<=10 表达式2 条件表达式判断是否为真 ,如果为真,循环日语句(当循环体语句执行完毕后执行表达式三)
// i++ 表达式3 执行++ -- 继续执行表达式2 ,然后进行判断,再次判断是否执行循环体语句
// for(int i = 1;i<=10;i++/--){
// 循环体语句
// }
public static void main(String[] args) {
// for (int i = 1; i <= 5; i++) {
// System.out.println(i);
// }
// int i = 0;
// for (i = 0; i < 5; i++) {
// System.out.println(i+1);
// }
// System.out.println(i);
// 1~100之间3的倍数或以3结尾的数字
for (int i = 1; i < 101; i++) {
if (i % 3 == 0 || i % 10 == 3) {
System.out.println(i);
}
}
}
}
案例-逢七过:
public static void main(String[] args) {
// 1~100
// 逢七过
for (int i = 1; i < 101 ; i++) {
if (i%7==0||i%10==7||i/10==7){
System.out.println("过");
continue;//结束当前循环进入下一次
// break; //结束循环跳出结束
}
// else{
System.out.println(i);
// }
}
}
死循环:
(1)如果两个;之间写true的话,就表示循环条件成立
(2)如果两个;之间的循环条件省略的话,就默认为循环条件成立
(3)如果循环变量的值不修改,那么循环条件就会永远成立
案例:
public static void main(String[] args) {
for (; true;){ //条件永远成立
System.out.println("我爱你!");
}
}
二.while 循环
基本格式:
while (循环条件语句①) {
循环体语句②;
}注意: while(循环条件)中循环条件必须是boolean类型
执行流程:
第一步:执行循环条件语句①,看循环条件语句的值是true,还是false;
如果是true,执行第二步;
如果是false,循环语句中止,循环不再执行。
第二步:执行循环体语句②;
第三步:循环体语句执行完后,重新从第一步开始再执行一遍
案例-输出整数1-10
public static void main(String[] args) {
// 1 2 3
// for(int i = 0;i<=10;i++){}
// while(判断表达式){
// 循环体语句
// }
int i = 0;
while (i < 10) {
i++;
System.out.println(i);
}
}
案例-输入性别判定
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.println("请输入性别:");
while (true){
String char1 = scan.next();
if (char1.equals("男") || char1.equals("女") || char1.equals("保密") ) {
System.out.println(char1);
break;
} else {
System.out.println("输入无效,请重新输入:");
}
}
}
死循环:
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int positive = 0;
int negative = 0;
while(true){
System.out.print("请输入整数(0表示结束):");
int num = input.nextInt();
if(num > 0){
positive++;
}else if(num < 0){
negative++;
}else{
break;
}
}
System.out.println("正数个数:" + positive);
System.out.println("负数个数:" + negative);
input.close();
}
三.do...while
do...while循环语句标准格式:
do { 循环体语句①; } while (循环条件语句②);
注意:
(1)while(循环条件)中循环条件必须是boolean类型
(2)do{}while();最后有一个分号
(3)do...while结构的循环体语句是至少会执行一次,这个和for和while是不一样的
执行流程:
第一步:执行循环体语句①;
第二步:执行循环条件语句②,看循环条件语句的值是true,还是false;
如果是true,执行第三步;
如果是false,循环语句终止,循环不再执行。
第三步:循环条件语句执行完后,重新从第一步开始再执行一遍
案例-利用do...while 猜大小
public static void main(String[] args) {
// 0-10 如果没有猜对继续输入猜
// 没猜对继续猜
// 猜大猜小了均有提示,猜对了循环结束
Scanner scan = new Scanner(System.in);
int random = (int)(Math.random()*11);
// boolean flag = false;
int i = 0;
do {
System.out.println("请输入您的猜测:");
int guess = scan.nextInt();
++i;
if (guess==random){
System.out.println("恭喜你猜对了!");
// flag =true;
break;
}else if (guess < random){
System.out.println("猜小了请继续猜测");
}else {
System.out.println("才猜大了,请继续猜测!");
}
}while (true);
System.out.println("你真是太棒了"+ i+ "次就猜对了");
scan.close();
}
死循环:
do{
循环体语句;//如果此时循环体中没有跳出循环的语句,就是死循环
}while(true);
注意:
(1)while(true):常量true表示循环条件永远成立
(2)while(循环条件),如果循环条件中的循环变量值不修改,那么循环条件就会永远成立
(3)while()中的循环条件不能空着
四、循环语句的区别
循环次数角度:
- do while 至少执行一次循环体语句
- for和while 循环先判定循环条件是否成立,然后再决定是否执行循环体,至少执行0次循环体语句
如何选择:
-
遍历有明显的循环次数(范围)的需求,选择for循环
-
遍历没有明显的循环次数(范围)的需求,循环while循环
-
如果循环体语句块至少执行一次,可以考虑使用do...while循环
-
本质上:三种循环之间完全可以互相转换,都能实现循环的功能
循环嵌套:
输出直角三角形以及:
package day0407;
import java.util.Scanner;
public class ForFor1 {
public static void main(String[] args) {
输出五行直角三角形
//直接输出
for (int i = 0; i < 5; i++) {
for (int j = 0 ; j<=i;j++){
System.out.print("*"+ "\t");
}
System.out.println("" );
}
矩形
for (int i = 0; i < 5; i++) {
for (int j = 0 ; j<5;j++){
System.out.print("*"+ "\t");
}
System.out.println("" );
}
//输入行数生成目标三角形
Scanner scan = new Scanner(System.in);
System.out.println("请输入行数:");
int row = scan.nextInt();
for (int i = 0; i < row; i++) {
for (int j = 0 ; j<=i;j++){
System.out.print("*"+ "\t");
}
System.out.println("" );
}
}
}
99乘法表(含制表符版本):
public class ForFor1 {
public static void main(String[] args) {
//
//九九乘法表
for (int i = 1; i < 10; i++) {
for (int j = 1; j <= i; j++) {
System.out.print(j + "*" + i + "=" + (i * j) + "\t");
}
System.out.println("");
}
}
}
四、循环中的特殊关键字
continue();
使用场景:终止switch或者当前循环
-
在选择结构switch语句中
-
在循环语句中
-
离开使用场景的存在是没有意义的
break();
使用场景:提前结束本次循环,继续下一次的循环
五、==和equals的区别
标签:语句,循环体,day03,System,while,循环,-----,out From: https://blog.csdn.net/m0_61589682/article/details/137473740如果是复杂数据类型,== 进行地址值比较,而不是字面量比较