Java学习日志Day4_选择结构语句(switch穿透)、流程控制语句(循环结构语句)、for循环嵌套、跳转控制语句

一、switch语句的穿透效果灵活运用

  1. 穿透效果:switch语句中,case与1个语句匹配了,如果没有break会不再与case进行匹配,直接执行后面的表达式。

  2. example:

/*	
	将键盘录入一个月份,判断季节 (利用case穿透)
		3,4,5 春季
		6,7,8 夏季
		9,10,11 秋季
		12,1,2 冬季
*/
import java.util.Scanner ;
class Switch{
	public static void main(String[] args){
	
		Scanner sc = new Scanner(System.in) ;			//创建键盘录入对象
		
		System.out.println("请输入一个数据(1-12):") ;		//提示并录入数据
		int month = sc.nextInt() ;
		
		switch(month){		//使用switch来判断
		case 3:
		case 4:
		case 5:
			System.out.println("春季") ;
			break ;
		case 6:
		case 7:
		case 8:
			System.out.println("夏季") ;
			break ;
		case 9:
        case 10:
		case 11:
			System.out.println("秋季") ;
			break ;
		case 12:
        case 1:
		case 2:
			System.out.println("冬季") ;
			break ;	
		default:
			System.out.println("对不起,您输入的数据不合法") ;
			break ;
		}
	}
}

二、循环结构语句

  1. for循环:
    1). for循环的格式:
	for( 初始化语句 ; 条件语句 ; 步长语句(控制体语句){
				 循环体语句;
		}

2). 流程:
1)初始语句给当前循环中的变量赋值:执行一次;
2)接下来执行条件语句,判断条件语句是否成立;
3)如果条件语句结果成立:true,执行3)循环体语句;
4)执行控制体语句++/–,循环了;
5)继续去判断条件语句是否成;
6)成立,继续执行循环体语句…


当前条件语句不成立,for循环结束!
example1:

	for(int x = 0 ; x <= 9 ; x ++){					//循环体语句
			System.out.println("helloworld") ;		//1次 / 2次 /3..... 10
		}

example2:

/*
	在控制台打印出所有的水仙花数!
		
		什么是水仙花数:
			1)是三位数		可以使用for循环:明确了范围 100-1000(不包含1000)
			2)每一个位上的数据的立方相加的结果是该数据本身!
				153 = 1*1*1 + 5*5*5 + 3*3*3 
			
			3)明确了范围 x >=100 && x<1000
			4)每一个位上的数据如何确定 
	
			定义三个变量:ge,shi,bai:分别代表个位,十位,白为
			int ge = x % 10 ; //求余数 		//153 % 10 = 3 
			int shi = x / 10  % 10 ;       // 153 / 10 = 15   % 10 = 5
			int bai = x / 10 /10 % 10     // 153 / 10 /10 = 1%10 = 1
			
			在循环中加入判断
			如果当前x数据==(ge*ge*ge+shi*shi*shi+bai*bai*bai)
			
				获取到x数据
				
*/
class ShuiXianHuaShu{
	public static void main(String[] args){
		
		System.out.println("开始打印水仙花数...") ;
		
		//水仙花数:已经明确范围:使用for循环
		for(int x = 100 ; x < 1000 ; x ++){
			//100-1000(不包含)
			//定义三个变量:分别代表个位,十位,百位
			int ge = x % 10 ;
			int shi = x / 10 % 10 ;
			int bai = x /10 /10 %10 ;
			
			//进行判断
			if(x ==(ge*ge*ge+shi*shi*shi+bai*bai*bai)){
				//输出x的值
				System.out.println("x:"+x) ;
			}
		}
		System.out.println("水仙花数打印完毕...") ;
	}
}

3). 循环+统计:
①. 定义一个统计变量 count 从0开始;
②. 明确范围:for循环;
③. 确定每个位数据;
④. 当满足条件:统计变量++ ;
⑤. 输出统计变量。
example:

//求出所有的水仙花有多少个
class ShuiXianHuaShu{
	public static void main(String[] args){
		
		//定义统计变量
		int count = 0 ;
		//水仙花数确定
		for(int x = 100 ; x <=999 ; x ++){
			//确定每个位数据
			int ge = x % 10 ;
			int shi = x /10 % 10 ;
			int bai = x /10 /10 % 10 ;
			
			//满足条件
			if(x == (ge*ge*ge+shi*shi*shi+bai*bai*bai)){
				System.out.println("满足条件的数据是:"+x) ;
				//统计变量
				count ++ ;
			}
		}
		
		System.out.println("水仙花数共有"+count+"个") ;
	}
}
  1. while循环:(while和for循环: 两个循环最大的区别:是否明确循环次数! )
    1). while循环的通用格式:

     初始化语句;
     while(条件表达式){
     	循环体语句
     	控制体语句;
     }
    

2). 执行流程:
初始化语句:给变量进行赋值
当前条件表达式成立,执行循环体语句;
继续控制体语句, 再次执行条件表达式


当条件表达式不满足条件,while循环结束

3). 注意事项:
while循环在使用的时候,不要忘了控制体语句,否则死循环!

扩展:

	死循环:
		循环语句没有结束条件---恒成立!
		
	while循环格式(推荐)
	for循环格式
		for(;;){
			循环体语句;
		}
		

	灵活使用死循环:当不明确次数,使用while循环
		while(true){
			
			//判断
			满足条件,退出死循环 
			break ; 
		}

4). while和for循环的区别什么?
①. 应用场景的区别:
是否明确循环次数;
如果明确循环次数,优先使用for循环 (开发中经常使用);
当不明确循环的次数,使用while循环;

②. 从格式----(内存角度) :for优于 while
for循环结束之后,不能够访问到for循环中的变量;
循环结束了, 变量(内存中变量:临时变量)就需要被回收了, 节省内存(栈内存);

③. while循环:由于存在初始化语句是在while外面定义的,所有当前while循环,依然访问到while循环中的变量。
example:

/*
	键盘录入数据,玩猜数字游戏   
		java.lang.Math:数学运算 (存在功能:random():产生随机数)
				
			public static double random(): 
			获取随机数  double [0.0,1.0)
				
	分析:
		1)导包: 使用Scanner类  :java.util.Scanner;
		2) 产生一个随机数:0-100之间的随机数 Math.random()*100 +1
		3)创建键盘录入对象
		4)提示并录入数据 (不断录入)
		   4.1)判断
				使用键盘录入的数据和产生的随机数进行比较
				如果大了,提示"您录入的数据大了"
				如果小了,提示小了
				否则,就一致! 	
*/

import java.util.Scanner ;
class WhileTest2{
	public static void main(String[] args){
			
		/*	使用Math类中的random() :数学运算类
			double number = Math.random() ; //number >= 0.0 && number< 1.0
			System.out.println(number) ;	*/
		
		/*	获取一个数据:1-100之间的随机数 (int类型)
			int number = (int)(Math.random()*100+1);
			System.out.println(number) ;
		--------------------------------------------*/
		
		//产生一个1-100之间的随机数
		int number = (int)(Math.random()*100+1) ;
		
		//统计猜多少次
		//定义统计变量
		int count = 0 ;
		
		//不知道录入多少次才能猜中,无法明确次数,使用while
		
		while(true){
			count ++ ;
			
			//创建键盘录入对象
			Scanner sc = new Scanner(System.in) ;
			
			//提示并录入
			System.out.println("请输入一个数据(100以内):") ;
			int guessNumber = sc.nextInt() ;
			
			//判断
			if(guessNumber > number){
				System.out.println("您要猜的数据大了...") ;
			}else if(guessNumber < number){
				System.out.println("您要猜的数据小了...") ;
			}else{
				System.out.println("恭喜您猜中了,"+count+"次猜中了..") ;
				//退出循环
				break ; //退出,中断
			}
		}	
	}
}
  1. do_while循环:
    1). do_while循环语句的格式:
		初始化语句;
		do{
			循环体语句;
			控制体语句;
		}while(条件表达式) ;

2). 执行流程:
初始化语句对变量赋值一次;
成立,执行循环体语句—控制体语句;
判断条件表达式是否成立!

条件不成立,循环语句结束!

3). do_while循环和for,while最大的区别:即使条件不成立,循环体至少执行一次!

三、for循环嵌套

  1. 格式:

     **for循环嵌套:
     	for(初始化语句1;条件表达式1;控制体语句1){
     	
     		for(初始化语句2;条件表达式2;控制体语句2){
     			循环体
     		}
     	}
     内层循环作为外层的循环体语句!**
    
  2. 执行流程:
    初始化1先执行,条件表达式1成立,
    执行循环:for循环
    先执行初始化语句2, 条件表达式2成立.
    循环体语句 ---->控制体语句2----条件表达式2是否成立
    不满足条件
    控制体语句1
    example:

/*
	99乘法表:
1*1=1
1*2=2  2 * 2 = 4
1*3=3  2 * 3 = 6   3 * 3 = 9 
		...

1*9=9		      ....				*/
		
		// X :代表任意字符 (转移字符)
		// \t :制表符: 相当于在记事本中的缩进效果 
		// \n :换行
		
		//为了保证数据有效:行和列值:1开始
		for(int x = 1 ; x <= 9 ; x++){						//行数
			for(int y  =1 ; y <=x ; y++){					//变化的列数
				System.out.print(x+"*"+y+"="+(y*x)+"\t") ;
			}
			System.out.println();
		}

四、跳转控制语句:break 、continue 、return 。

  1. break:表示中断结束的意思,不能单独场景使用。

    1). 只能在这两个场景使用:
    ①. switch语句:遇见break结束;
    ②. 循环中使用:结束循环语句的。

    2). 单个循环语句中,嵌套循环中使用(早期的)。
    标签语句:给外层循环和内层循环起一个名字:
    标签名称:for(xxx){}
    break 标签名称;
    example:

		wc:for(int x = 0 ; x < 5 ; x ++){ 		//x=0,1,2
			nc:for(int y = 0 ; y < 5 ; y++){
			
				if(y == 2){
					//break wc ; 	//结束外层循环
					break nc ;		//结束内层循环
				}
				System.out.print("*") ; 
			}
			System.out.println() ;
		}
  1. continue:结束当前循环,立即下一次循环!不能单独使用,一般都在循环中使用!

  2. return 也属于跳转控制语句,结束方法去使用;

一般情况:return需要结合有具体返回值类型的方法使用!return很少单独使用!
return:返回

  1. 结束方法:1). return;2). System类:System.exit(0);退出java虚拟机,结束main方法。
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

igfff

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值