Java基础:控制流程(循环流程)while、do-while、for

1.1 循环结构

1.1.1 while循环

//测试while循环
import java.util.Scanner;

public class WhileTest{
	public static void main(String[] args) {
			

		//用户输入一个数字 判定这个数字的长度 123 --> 3

		/*
			1: 在当前类的头顶上编写如下代码:
				import java.util.Scanner;
			2: 使用
				Scanner input = new Scanner(System.in);
			3: 获取用户输入的值
				int num = input.nextInt();
		*/

		Scanner input = new Scanner(System.in); // int num = 10;
		System.out.println("请输入一个数字>>>>>>>");
		int num  = input.nextInt(); //Math.random();
		System.out.println("用户输入的值是:"+num);


		// 计算当前用户输入数字的长度

		//a:声明一个变量存储 长度
		int length = 0;

		while(num!=0){
			num = num / 10;
			length++;
		}

		System.out.println("您输入的数值的长度是"+length+"位数");

	}
}

I、语法结构

while(expression){
    //loop-statement;
}

II、执行流程

  • 判定表达式的结果 如果结果时true则执行循环体一次 ,继续判定 直到循环条件(表达式)的结果时false,则终止整个while循环
  • 最开始表达式的结果就是false 则直接跳过;

III、注意事项

  • 需要在循环体中存在一些代码能够改变循环条件的结果,这样该循环才不会变为死循环(死循环不一定是坏的);
  • 知道循环终止条件,但是不确定循环次数;

// 一下代码没有问题 编译器只管类型ok
boolean flag = true;
while(flag){

}
System.out.println("excute.....");

// 一下代码有问题 编译的时候确定了表达式的值 所以可以肯定后面的excute是不可达的
while(true){

}
System.out.println("excute.....");

// 一下代码有问题 final之后相当于flag会被替换为字面值
final boolean flag = true;
while(flag){

}
System.out.println("excute.....");

1.1.2 do-while循环

//测试do-while循环
import java.util.Scanner;

public class DoWhileTest{
	public static void main(String[] args) {
			

		//用户输入一个数字 判定这个数字的长度 123 --> 3


		Scanner input = new Scanner(System.in); // int num = 10;
		System.out.println("请输入一个数字>>>>>>>");
		int num  = input.nextInt(); //Math.random();
		System.out.println("用户输入的值是:"+num);


		// 计算当前用户输入数字的长度

		//a:声明一个变量存储 长度
		int length = 0;

		do{
			num = num / 10;
			length++;
		}while(num!=0);


		System.out.println("您输入的数值的长度是"+length+"位数");
	}
}

I、语法结构

do{
    //loop-statement
}while(expression);

II、执行流程

  • 不管三七二十一,先做一次循环体;
  • 然后判定表达式的结果 如果结果时true则再执行循环体一次 ,继续判定 直到循环条件(表达式)的结果时false,则终止整个do-while循环

III、注意事项

  • 知道循环终止条件,但是不确定循环次数;
  • do-while的使用场景比较少,适用于循环条件的判定依赖于循环体的执行;

1.1.3 for循环

//测试for循环
public class ForTest{
	public static void main(String[] args) {
			
		// 1: 计算1-100累加求和

		//int num = 1; // 这个变量存储 1- 100之间的值

		int sum = 0; // 累加求和

		

		//1:声明循环变量
		//2:判定循环条件  //5:继续判定循环条件
		for(int num = 1;num<=100;num++){//4:改变循环变量的值
			//3:执行循环体1次
			sum = sum+num;
		}

		System.out.println("1累加到100之间的和是:"+sum);

		
	
	}
}

I、语法结构

for(;;){
    // 循环体
}

for(;循环条件;){
    // 循环体
}

for(声明循环变量;循环条件;改变循环变量的表达式){
    // 循环体
}

II、执行流程

  • 声明循环变量;
  • 判定循环条件 如果条件位true 执行循环体一次
  • 如果条件位false 则跳过for循环执行后续代码
  • 如果条件位true 执行循环体之后,执行改变循环变量的表达式 ,继续判定循环条件以此类推;

III、注意事项

  • for循环是所有循环里面格式最灵活的;
  • 循环变量声明在for中,会在一定程度上降低内存消耗;
  • 改变循环变量的值的表达式,这是执行完循环体之后要做的,不能因为写在了同一行,所以认为它的执行顺序和循环变量声明,循环条件判定是在一起执行的;
  • for循环能够确定循环次数,while确定的循环的终止条件;

1.2  流程中断

1.2.1 continue

一定要知道我们的程序的执行流程是严格按照顺序流程执行的,在执行的过程中会嵌套各种分支以及循环;

continue:跳出循环 只跳出当前循环一次;

//测试continue
public class ContinueTest{
	public static void main(String[] args) {
		// 使用生成1-100之间的数字 然后判定这些数字中是否存在
		// 偶数,只打印偶数 如果是奇数 则跳过
		for (int i=1;i<=100 ;i++ ) {
			// i就是1-100之间的数值
			// 判定i的值是奇数还是偶数
			if(i%2==1){ //i是奇数
				continue;
			}else{//i是偶数
				System.out.print(i+" ");
			}
			System.out.println("我是换行");
		}
	}
}

1.2.2 break

打断case穿透,跳出当前循环

// 测试break
public class BreakTest{
	public static void main(String[] args) {
		
		// 需求:计算1-100累加求和 然后计算累加值超过3000之后的累计的值是几

		//声明变量存储累加的值
		int sum = 0;

		//1:计算累加求和 1-100
		for(int i = 1;i<=100;i++){
			sum = sum+i; //sum+=i
			// 判定累加的值是否超过3000了
			if(sum>=3000){
				System.out.println("累加的和超过了3000,目前累加到"+i+",累加的和是"+sum);
				// 跳出循环
				break;
			}

		}
		System.out.println("game over");
	}
}

1.2.3 return

跳出方法

// 测试break
public class BreakTest{
	public static void main(String[] args) {
		
		// 需求:计算1-100累加求和 然后计算累加值超过3000之后的累计的值是几

		//声明变量存储累加的值
		int sum = 0;

		//1:计算累加求和 1-100
		for(int i = 1;i<=100;i++){
			sum = sum+i; //sum+=i
			// 判定累加的值是否超过3000了
			if(sum>=3000){
				System.out.println("累加的和超过了3000,目前累加到"+i+",累加的和是"+sum);
				// 跳出循环
				break;
			}

		}
		System.out.println("game over");
	}
}

从跳出的程度而言,continue<break<return

一下代码是为了更好的认识continue、break和return;

// 测试break
public class BreakTest{
	public static void main(String[] args) {
		
		// 需求:计算1-100累加求和 然后计算累加值超过3000之后的累计的值是几

		//声明变量存储累加的值
		int sum = 0;

		//1:计算累加求和 1-100
		for(int i = 1;i<=100;i++){
			sum = sum+i; //sum+=i
			// 判定累加的值是否超过3000了
			if(sum>=3000){
				System.out.println("累加的和超过了3000,目前累加到"+i+",累加的和是"+sum);
				// 跳出循环
				break;
			}

		}
		System.out.println("game over");
	}
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值