06 Java语言基础语法 -5

本文深入讲解循环控制的概念,包括while、do-while和for循环的语法、特点和使用场合,通过示例展示如何解决实际问题,如逆序输出整数、求自然数之和、输出特定数列等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第五章 循环控制


为什么需要循环语句?
- 需要反复执行同样的操作
- 如果不用循环语句,顺序执行相同代码,代码拖沓冗余
- 循环语句精简,重用代码
- 循环语句代码可读性、可维护性更好

while和do-while循环

while循环语句

  1. 语句
    while、do-while和for均属于循环语句
while(循环条件){				// 循环条件:循环持续执行
	循环操作语句				// 循环中被重复执行的操作
}
  1. 要点
    (1)先判断再执行
    (2)循环次数不定
    (3)避免死循环
  2. 示例:输入一个正整数,把整数逆序输出,比如12345,输出54321.
    问题分析步骤:
    • 确定循环条件:什么情况下一定要循环下去
    • 确定循环操作:确定循环做什么事情
    • 把循环条件和循环语句填入合适的循环语句结构中即可。
import java.util.Scanner;
public class whileDemo{
	public static void main(String[] args){
		Scanner input=new Scanner(System.in);
		System.out.println("请输入一个整数");
		int number=input.nextInt();
		//number=12345;
		while(number!=0){
			int res=number%10;
			System.out.print(res);
			number/=10;
		}
	}
}

do-while循环语句

  1. 语法
    while循环又称当前循环 → 先判断后执行
    do ··· while循环又称直到型循环 → 先执行后判断
do{
	循环操作语句			← 先执行一次循环
}while(循环条件);		← 满足条件:循环继续执行
  1. 要点
    • 先执行再判断
    • 至少执行一次
    • 最后的分号勿漏
  2. 示例:计算从1开始的连续n个自然数之和,当其和值刚好超过100时结束,求这个n值。
    问题分析步骤:
    * 确定循环条件:什么情况下要一直循环下去。
    * 确定循环操作:确定循环做什么事情。
    * 把条件循环和循环操作语句填入合适的循环语句结构中即可。
public class doWhileDemo{
	public static void main(String[] args){
		int n=0;			//要被加的数
		int sum=0;			//累加求和
		do{
			n++;
			sum+=n;
		}while(sum<=100);
		System.out.println("sum="+sum);			//sum=105
		System.out.println("n="+n);				//n=14
	}
}

for循环

for循环语句

  1. 语法
for(表达式1;表达式2;表达式3){
	循环操作;
}

表达式1:参数初始化,给变量赋值
表达式2:条件判断
表达式3:更新循环变量,防止死循环
  1. 运行步骤:
    ① 参数初始化 → ② 条件判断,条件为true时 → ③ 循环操作被执行 → ④ 更新循环变量
    → ② ③ ④ ··· ② ③ ④ → ② 条件判断,条件为false时 → 整个循环终止
  2. 示例:
public class forDemo{
	public static void main(String[] args){
		// for循环的三个表达式都省略
		// 表达式1可以省略,我们可以把它提到for循环之前
		// 表达式2省略了会导致死循环,条件永远为true
		// 表达式3省略,可能会导致条件永远成立,形成死循环
		// 强调:3个表达式都可以省略,但两个分号不能省略
		for(int i=0;i<10;i++){
			System.out.println(i);
		}
/* 等同于上面的for循环
		int i=0;
		for(;i<10;){
			System.out.println(i);
			i++;
		}
*/
	}
}

while循环和for循环的对比

循环类型

  • while循环是不确定型循环(循环次数不确定)
  • for循环时确定型循环(循环次数确定)

相互转换

  • while循环和for循环可以相互转换

使用场合

  • 当循环次数确定时,使用for循环
  • 当循环次数不确定时,使用while循环
  1. 循环示例:输出1000以内能同时被3和7整除的正整数

问题分析:

  • 根据需求,要循环判断1~1000这些整数是否符合条件
  • 显然,这是一个确定型循环问题,适合使用for循环
  • 使用while循环也能实现,不过没有for循环直观
  • 整除问题涉及到取模运算
public class forDemo2{
	public static void main(String[] args){
		for(int i=1;i<=1000;i++){
			if (i%3==0 && i%7==0){
				System.out.println(i);
			}
		}
	}
}
  1. 有下面程序题,语句a=a+1执行的次数是(无数次
public class Test{
	public static void main(String[] args){
		int x=8,a=1;
		do{
			a=a+1;
		}while(x>0);
	}
}
  1. 以下循环体的执行次数是(1
int i,j;

for(i=0,j=1;i<=j+1;j--){
	i=i+2;
}

二重循环

  1. 二重循环的语法
for (表达式1;表达式2;表达式3) {			// 外循环
	for (表达式1;表达式2;表达式3) {		// 内循环
	}
}
  1. 二重循环的特点
  • 在循环体内含有一个循环语句的循环称为二重循环
  • 当外循环一次,内循环也要循环完毕,再回到外循环进入下一次循环,直到外循环循环完毕为止。
  1. 编程语句示例
    编程实现输出*号的三角形阵列共9行,第一行输出1颗 *,第二行输出2颗 * ,··· ···,第九行输出9颗 * 。

    问题分析:

    • 外循环控制打印行数,共九行。
    • 内循环控制每行打印的*号数。
    • 共9行,每行打印的*号个数跟行号正好一致。
public class PrintStar{
	public static void main(String[] args){
		// 外循环控制打印行数,共九行
		for(int i=1;i<=9;i++){
			// 内循环控制每行打印的*
			for (int j=1;j<=i;j++){
				System.out.print("*");
			}
			System.out.println();
		}
	}
}

# 运行结果:
*
**
***
****
*****
******
*******
********
*********

break和continue语句

break语法及使用

  1. 语法
    break:改变程序控制流

    • 在switch/case语句中用于跳出switch代码块
    • 在循环语句中,用于跳出循环而执行后面的语句
      在这里插入图片描述
      break一般和条件语句一起使用,有条件跳转。
  2. 要点

  • 结束循环的作用
  • 改变循环执行的次数
  • 只跳出本循环
  1. 扩展用法
  • 后跟标签

定向跳转至标签处,可以突破本层循环控制,标签放在循环之前,和循环之间不能有其他语句。

continue语法及使用

  1. 语法
  • continue作用:跳过循环体中剩余的语句而执行下一次循环。(结束本次循环,进入下一次循环。)
	—————————————————————
	↓					 |
while (… …) {			 |
	 … …				 |
	 … …				 |
	 … …				 |
	 continue;------------
	 … …
	 … …
	 … …
}

continue 一般和条件语句一起使用,有条件进入下一次循环从而提前结束本次循环。

  1. 要点
  • 没有结束循环
  • 没有改变循环执行行数
  • 只在本层循环中起作用
  1. 扩充用法
  • 后跟标签

定向跳转至标签处,可以突破本层循环限制,标签放在循环之前,和循环之间不能有其他语句。

  1. 打印100~200之间的质数
public class PrimeDemo{
	public static void main(String[] args){
		for(int i=100;i<=200;i++){
			boolean flag=true;
			for (int j=2;j<i;j++){
				flag=false;		// 非质数
				break;			// 终止的是内循环
			}
			
			//当是质数的时候打印
			/*if(flag){
				System.out.println(i);
			}*/
			if(!flag){
				continue;		// 继续下一次循环
			}
			System.out.println(i);
		}
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值