学习笔记_03程序流程控制

 if语句

 格式1:  
if (条件表达式) { 
语句体;
}

格式2:
if (条件表达式) { 
语句体1;
} else { 
语句体2;
}

格式3:
if (条件表达式1) { 
语句体1;
} else if (条件表达式2) { 
语句体2;
} else if (条件表达式3) { 
语句体3;
}
. . .
else {
语句体n+1; 
}

switch(表达式){ 
case 值1:
执行代码...; 
break;
case 值2:
执行代码...; 
break;

case 值n-1:
执行代码...; 
break;
default:
执行代码n; 
}

执行流程:
①     先执行表达式的值,拿着这个值去与case后的值进行匹配。
② 匹配哪个case的值为true就执行哪个case,遇到break就跳出switch分支。
③     如果case后的值都不匹配则执行default代码。

switch分支注意事项:
① 表达式类型只能是byte、short、int、char,JDK5开始支持枚举,JDK7开始支持String、
不支持double、float、long。
②  case给出的值不允许重复,且只能是字面量,不能是变量。 
③  不要忘记写break,否则会出现穿透现象。如果代码执行到没有写break的case块,执行完后将直接进入下一个case块执行代码(而且不会进行任何匹配),直到遇到break才跳出分支,这就是switch的穿透性。

switch穿透性案例(月份天数查看器)
需求:用户输入月份可以展示该月份的天数。
⚫ 1、3 、5、 7 、 8、 10、 12月份是 31天
⚫     2月份是闰年为29天、非闰年为28天。
⚫     4 、6 、9、 11月份 是30天

1. for循环格式和执行流程是什么样的?
// 输出3次HelloWorld
for (int i = 0; i < 3; i++) {
System.out.println("Hello World"); 
}
for (初始化语句  ; 循环条件; 迭代语句) { 
循环体语句;
}

需求:求1-10之间的奇数和,并把求和结果在控制台输出

public class fordemo {
	public static void main(String[] args) {
	//需求:求1-10之间的奇数和,并把求和结果在控制台输出
		int sum = 0;
	for(int i=1;i<=10;i++) {
		if(i%2 == 1) {sum += i;}
		}System.out.print(sum);
	}
}

水仙花数

需求:在控制台输出所有的“水仙花数”,水仙花数必须满足如下2个要求:
1. 水仙花数是一个三位数
2. 水仙花数的个位、十位、百位的数字立方和等于原数

public class Threaddemo {
	public static void main(String[] args) {
	/*需求:在控制台输出所有的“水仙花数”,水仙花数必须满足如下2个要求:
	1. 水仙花数是一个三位数
	2. 水仙花数的个位、十位、百位的数字立方和等于原数*/
	for(int i=100;i<=999;i++) {
		if(po3(i/100)+po3(i%100/10)+po3(i%10) == i) {System.out.println(i);}
		}
	}

	 public static int po3(int i){
		 int a =i*i*i;;
		 return a;
	 }
 }

1. while循环的格式,执行流程是怎么样的?
初始化语句; 
while (循环条件) {
循环体语句; 
迭代语句;
}
int i = 0; 
while (i < 3) {
System.out.println("Hello World"); 
i++;
}
2、什么时候用for循环,什么时候用while循环?
⚫  功能上是完全一样的,for能解决的while也能解决,反之亦然。
⚫ 使用规范是:知道循环几次:使用for;不知道循环几次建议使用:while。

珠穆朗玛峰(世界最高峰8848.86米)需求:
世界最高山峰是珠穆朗玛峰(8848.86米=8848860毫米),假如我有一张足够大的纸, 
它的厚度是0.1毫米。请问,折叠多少次,可以折成珠穆朗玛峰的高度。
思路:
⚫ 这种不清楚要循环多少次的情况可以选择用while实现。

public static void main(String[] args) {
	/*珠穆朗玛峰(世界最高峰8848.86米)需求:
世界最高山峰是珠穆朗玛峰(8848.86米=8848860毫米),假如我有一张足够大的纸, 
它的厚度是0.1毫米。请问,折叠多少次,可以折成珠穆朗玛峰的高度。*/
		int i = 1;
		int count =0;
	while(i<=88488600){
			i = i*2;
			count++;
		}System.out.println(count);
	}

do-while循环
⚫ 先执行再判断循环条件。
初始化语句; 
do {
循环体语句; 
迭代语句;
} while (循环条件);
int i = 0; 
do {
System.out.println(“Hello World!"); 
i++;
} while( i < 3);

特点:一定会先执行一次循环体。

三种循环的区别
⚫    for循环 和 while循环(先判断后执行)
⚫    do...while (第一次先执行后判断)
for 和  while 的区别:
⚫     for循环和while循环的执行流程是一模一样的。
⚫     如果已知循环次数建议使用for循环,如果不清楚要循环多少次建议使用while循环。
⚫ for循环中,控制循环的变量只在循环中可以使用。While循环中,控制循环的变量在循环后还可以继续使用。

死循环
⚫ 一直循环的执行下去,如果没有干预不会停止下来。
写法
for(;;) {
System.out.println("Hello World"); 
}
// 经典做法 
while(true) {
System.out.println("Hello World"); 
}
do {
System.out.println("Hello World"); 
} while (true);

密码验证
需求:系统密码是520,请用户不断的输入密码验证,验证不对输出 
密码错误,验证成功输出欢迎进入系统,并停止程序。
分析:
①  使用while死循环,让用户不断输入数据
②  与密码比对:验证不成功输出密码错误、
③ 验证成功输出欢迎进入系统,并使用break结束当前循环的执行。

import java.util.Scanner;
public class Threaddemo {
	public static void main(String[] args) {
	/*密码验证
需求:系统密码是520,请用户不断的输入密码验证,验证不对输出 
密码错误,验证成功输出欢迎进入系统,并停止程序。
分析:
①  使用while死循环,让用户不断输入数据
②  与密码比对:验证不成功输出密码错误、
③ 验证成功输出欢迎进入系统,并使用break结束当前循环的执行。*/
 Scanner sc = new Scanner(System.in);

	while(true){
		 int a = sc.nextInt();
		 if(a == 520) {System.out.println("密码正确");break;}
		 else System.out.print("输错了");
		}
	}

 }

嵌套循环的特点
⚫ 外部循环每循环一次,内部循环全部执行完一次。

循环嵌套
需求:在控制台使用  * 打印出4行5列的矩形


public class Threaddemo {
	public static void main(String[] args) {
	/*循环嵌套
需求:在控制台使用  * 打印出4行5列的矩形*/
for(int i = 1;i<=5;i++) {
	for(int j =1;j<=4;j++) {
		System.out.print("*");
	}System.out.print("\n");
}

	
	}

	
 }

跳转控制语句介绍
⚫    break   :  跳出并结束当前所在循环的执行。
⚫ continue: 用于跳出当前循环的当次执行,进入下一次循环。
break : 只能用于结束所在循环, 或者结束所在switch分支的执行。 
continue : 只能在循环中进行使用。

break和continue的拓展知识点
⚫ break   : 可以用在嵌套循环中跳出整个外部循环的并立即结束它。
⚫    continue: 可以用在嵌套循环中跳出外部循环的当次执行,进入外部循环的下一次。
 

/*break : 可以用在嵌套循环中跳出整个外部循环的并立即结束它。*/
		OUT:
		for (int i = 0; i < 4; i++) {
			for (int j = 0; j < 5; j++) {
			break OUT;
			}
	}
	/* continue: 可以用在嵌套循环中跳出外部循环的当次执行,进入外部循环的下一次。*/
		OUT:
		for (int i = 0; i < 4; i++) {
			for (int j = 0; j < 5; j++) {
			continue OUT;
			}
			
		}

Random生成随机数的特点
⚫ nextInt(n)功能只能生成:0 – (n-1)之间的随机数。
Random生成区间随机数的技巧:减加法。

1. Random随机数类生成需要几步,具体是什么样的?
⚫     导包:import java.util.Random;
⚫     Random r = new Random();
⚫     int number = r.nextInt(10);
2. Random随机数如何生成 65 – 91之间的随机数?
⚫     65 –  91  => (0 - 26)+ 65
⚫     int number = r.nextInt(27) + 65;

猜数字游戏
需求:
⚫ 随机生成一个1-100之间的数据,提示用户猜测,猜大提示过大,猜小提示过小,直到猜中结束游戏。
分析:
①  随机生成一个1-100之间的数据
②  使用死循环让用户不断提示用户猜测,猜大提示过大,猜小提示过小,猜中结束游戏。

import java.util.Random;
import java.util.Scanner;
public class Threaddemo {
	public static void main(String[] args) {
	/*猜数字游戏
需求:
⚫ 随机生成一个1-100之间的数据,提示用户猜测,猜大提示过大,猜小提示过小,直到猜中结束游戏。
分析:
①  随机生成一个1-100之间的数据
②  使用死循环让用户不断提示用户猜测,猜大提示过大,猜小提示过小,猜中结束游戏。*/
		Scanner sc =new Scanner(System.in);
		Random r =new Random();
		int a = r.nextInt(100)+1;
		while(true) {
			int num = sc.nextInt();
			if(num == a) {System.out.print("你赢了!");break;}
			else if(num > a) {System.out.print("猜大了");}
			else if(num < a) {System.out.print("猜小了");}
		}
	}
 }

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值