Java基础Day04

day04

  1. 流程控制分支结构
    1.1 流程控制的概念
    流程: 程序中,写很多代码,代码的执行顺序,称为流程
    流程控制: 可以把控代码执行顺序一部分语法结构

流程控制分类:

  1. 顺序结构 : 代码的执行顺序,从上到下,从左到右
  2. 分支结构 : 代码执行到某一个场景, 接下来代码的执行有多个选择,只能执行其中一个可以选择的代码
  3. 循环结构 : 某段代码,需要反复执行,可以使用循环的方式

在这里插入图片描述

1.2 if…else分支结构
1.2.1 if语句的第一种使用方式
if(需要一个boolean类型的表达式){

// 如果boolean类型表达式为true,那么需要执行的语句逻辑
}

if : 关键字,表示如果的含义
if语句的执行过程:

  1. 如果if小括号中的boolean类型的表达式结果为true,那么就执行if的大括号中的内容
  2. 如果if小括号中的boolean类型的表达式结果为false,那么if大括号中的内容不执行,if语句结束,代码继续接着执行,不影响其他代码运行

单独的if语句实际开发场景使用:
前台将客户输入的数据,传输到后台,后台接收到数据之后,需要验证数据的合法性(验证数据是否符合规范)
if( 用户的密码长度小于6位){// 要求用户的密码长度不能小于6位
// if语句成立,证明用户密码不符合条件
抛出一个错误信息,代码就会停止运行(异常)
}

代码
// if语句的第一种语法格式
import java.util.Scanner;
public class IfDemo{
public static void main(String[] args) {
// 需求 : 任意给你一个数,如果是奇数,将奇数值+1,进行打印
Scanner sc = new Scanner(System.in);
// 获取到一个整数
System.out.println("请输入一个数值: ");
int w = sc.nextInt();
// 判断这个数是不是一个奇数
if( w % 2 != 0){// 需要boolean类型的表达式
// w就是一个奇数,证明符合了if的判断条件
w ++ ;
}
System.out.println(w);
}
}

1.2.2 if…else语句的使用
if(boolean类型表达式){

// boolean表达式为true所执行的代码
}else{
// boolean表达式为false所执行的代码
}

if : 关键字,表示如果,if在询问boolean类型的表达式是true吗?
如果是true执行if大括号中的代码
如果为false,执行else大括号中的代码

else : 其他,只要if语句中的boolean类型不成立,一律算作其他情况

注意:

  1. if…else这种语法结构,if或者是else大括号语句,必须会执行到其中一个
  2. 不论if执行还是else执行,代码都会继续运行
  3. if…else语法结构更加灵活,可以替换三元运算

要求: 小明考试,妈妈说,小明考试及格,买火箭; 考试不及格,作业写100遍

代码
// if…else 语法结构
public class IfElseDemo{
public static void main(String[] args) {
// 要求: 小明考试,妈妈说,小明考试及格( >= 60),买火箭;
// 考试不及格( <60 ),作业写100遍

	// 1. 定义一个小名的考试成绩
	int score = 43 ;
	// 2. 使用if...else 语法进行语法的控制
	if( score >= 60 ){// 表示小名考试及格
	
	   System.out.println("买火箭去");
	}else{
	
	   System.out.println("作业写100遍");
	}
	System.out.println("Hello World!");
}

}

1.2.3 if…else…if语法结构
if(boolean类型表达式1){
// 情况1
}else if(boolean类型表达式2){

// 情况2
}else if(boolean类型表达式3){

// 情况2

}…else{
// 以上所有的if条件都不满足,执行else
}

执行过程:

  1. 先进行表达式1的判断,如果为true,执行情况1,情况1执行结束,整个if…else…if全部结束
  2. 先进行表达式1的判断,如果为false,继续向下进行if的判断,进行表达式2的判断,
    结果为true,执行情况2,情况2执行结束,整个if…else…if全部结束
    结果为false,继续向下进行其他if语句的判断…
  3. 如果所有的if语句的判断条件全部失败,那么执行else中的代码

注意 : if…else…if语句,可以没有else语句

要求: 小明考试,妈妈说,考试>=90分 ,买游艇; 大于等于80,小于90 ,买汽车; 大于等于70,小于80 , 买滑板 ; 大于等于60,小于70,去一趟游乐园; 小于60,作业100遍

代码
// if…else…if语法结构
import java.util.Scanner;
public class IfElseIfDemo{
public static void main(String[] args) {
/*
要求: 小明考试,妈妈说,考试>=90分 ,买游艇;
大于等于80,小于90 ,买汽车;
大于等于70,小于80 , 买滑板 ;
大于等于60,小于70,去一趟游乐园;
小于60,作业100遍
*/
Scanner sc = new Scanner(System.in);
// 获取到小名的考试成绩
System.out.println("请给出小名的考试成绩: ");
int score = sc.nextInt();

    if( score >= 90 ){
	   System.out.println("买游艇");
	}else if( score >= 80 && score < 90){
	
	   System.out.println("买汽车");
	}else if( score >= 70 && score < 80){
	
	  System.out.println("买滑板");
	}else if( score >= 60 && score < 70){

	  System.out.println("去一趟游乐园");
	}else{
	  System.out.println("作业100遍");

	}
	System.out.println("Hello World!");
}

}

1.3 switch…case分支结构
1.3.1 switch…case语法结构
语法结构:
switch(表达式){
case 常量1:
代码1;
break;
case 常量2:
代码2;
break;

default:
代码n;
break;
}

关键字分析:

  1. switch : 开关,匹配
  2. case : 情况,事件
  3. break : 破坏,结束,跳出
  4. default : 默认的

switch…case的执行过程:

  1. switch中的表达式,类型 :
    JDK1.5之前 : byte short char int
    JDK1.5版本 :枚举类型enum
    JDK1.7版本 :String
  2. switch表达式的结果,与case进行匹配,匹配的方式就是从上到下依次进行case常量的匹配,如果与其中的一个case常量匹配成功,执行对应case中的代码,代码执行完毕,执行到break,整个switch结束
  3. break : 表示结束整个switch语句
  4. 如果switch表达式的结果,与任何的一个case常量都没有匹配成功,执行default中的代码

要求: 匹配星期,从周一到周末,使用1-7进行星期表示,在程序中,随机的生成1-7的随机数,告知我,这是星期几

代码
// switch…case语法结构
import java.util.Random;
public class SwitchCaseDemo{
public static void main(String[] args) {
/*
要求: 匹配星期,从周一到周末,使用1-7进行星期表示,
在程序中,随机的生成1-7的随机数,告知我,这是星期几
*/
Random ran = new Random();
// 获取一个星期的数值 1-7
int weekday = ran.nextInt(7)+1;
System.out.println(weekday);

	switch(weekday){// switch表达式,需要类型 : byte short char int String
		case 1:
		System.out.println("今天是星期一");
	    break;
		case 2:
		System.out.println("今天是星期二");
	    break;
		case 3:
		System.out.println("今天是星期三");
	    break;
		case 4:
		System.out.println("今天是星期四");
	    break;
		case 5:
		System.out.println("今天是星期五");
	    break;
		case 6:
		System.out.println("今天是星期六");
	    break;
		case 7:
		System.out.println("今天是星期天");
	    break;
		default:
           System.out.println("没有这个星期");
	    break;
	}
	System.out.println("Hello World!");
}

}

1.3.2 switch…case使用的注意事项

  1. switch小括号中的表达式,类型: byte,short,char,int,从JDK1.7版本 String

  2. case 后面承接的是一个常量

  3. 如果每一个case 后面有独立的代码执行逻辑,尽量在case后添加break 语句
    如果有多个case语句有相同的代码处理逻辑,可以使用switch…case的穿透性,即case后面没有break,switch就不结束,继续向下执行逻辑代码,直到遇到break或者整个switch全部执行完毕结束

  4. default : 默认的,当switch与任何一个case都没有匹配,那么执行default, default关键字可以不写在最后,但是仍然在最后才执行,如果deafult没有写在最后,希望给default后面添加上break

  5. switch语句什么时候完全结束

  1. 遇到break;
  2. switch执行完毕

练习: switch…case的穿透性(switch就不结束,继续向下执行逻辑代码)
要求: 随机的生成一个整数,1-5,匹配工作日,如果6-7匹配休息日

代码
// switch…case 的穿透性
public class SwitchCaseChuanTou{
public static void main(String[] args) {
/*
要求: 给出一个整数,1-5,匹配工作日,如果6-7匹配休息日
穿透性的使用: 如果有多个case情况有相同的处理逻辑,可以利用switch的穿透性
*/
int w = 4;
switch(w){
case 1:
case 2:
case 3:
case 4:
case 5:
System.out.println(“工作日”);
//break;
case 6:
case 7:
System.out.println(“休息日”);
break;

	  default:
		 System.out.println("不是一个星期的天数");
	}
	System.out.println("Hello World!");
}

}

1.3.3 switch和if的使用比较

  1. if语句实际开发中,使用率更高,因为if语句更加灵活

  2. switch 性能比if好,效率高,原因: switch只有一个表达式的计算结果,剩下的就是匹配,
    if…else…if,每一次if语句都需要进行条件判断

  3. 循环结构
    循环结构: 如果有一部分代码需要反复执行,可以使用循环结构实现
    举例: 客户登录界面,要求客户输入用户名和密码,验证用户名和密码是否正确,
    正确 -----> 登录成功
    不正确----> 可以给客户一共三次机会,让客户可以反复的输入用户名和密码

2.1 for循环语法结构
for循环语法结构:

for( 初始化条件 ; 需要boolean类型的判断条件 ; 初始化条件的变化规律){
// 需要反复执行的代码
}
解释说明:

  1. for 关键字,表示循环的含义
  2. 初始化条件 : 定义一个循环的初始化变量,表示循环的开始节点
  3. boolean类型的判断条件 : 只要boolean类型的条件成立,那么就会执行for大括号中的代码, 判断条件可以是比较运算表达式,也可以使逻辑运算的表达式,一般是初始化条件的终止节点
  4. 初始化条件的变化规律 : 多数场景下,变化规律是初始化条件的自增或者自减

要求: 打印10遍 hello 语句
for(int i = 1 ; i <= 10; i ++ ){
System.out.println(“Hello”);
}

2.2 for循环的执行过程
要求: 打印1-5的数字

代码
// for循环的定义案例
public class ForDemo{
public static void main(String[] args) {
/要求: 打印1-5的数字
分析 : 1. 循环的初始状态从1 开始,定义一个int i = 1 ,作为循环的开始
2. 数字到了5,就是最后一次打印
3. 数值如何从1变到5,每次+1
/
for(int i = 1 ; i <= 5 ; i ++){
System.out.println(i);
}
}
}

for循环的执行过程:

2.3 for循环使用的注意事项
for( 初始化条件 ; 需要boolean类型的判断条件 ; 初始化条件的变化规律){
// 需要反复执行的代码
}

  1. 初始化条件在整个for循环中,只执行一次,一般是一个循环的开始节点
  2. 只要中间的判断条件成立(true),那么for循环代码就会执行,判断条件不成立(false),整个for循环就执行结束, 一般判断条件是初始条件的终结点
  3. 变化规律,通常指初始化条件的变化规律,多数场景下是自增或自减,一般是初始化条件从开始节点变化到结束节点,变化规律
  4. for循环中的符号,都是英文符号

练习 1 :
要求: 打印5-1的数值

代码
// for 循环的练习
public class ForLianXi{
public static void main(String[] args) {
// 要求: 打印5-1的数值
for(int i = 5 ; i >= 1 ; i --){
System.out.println(i);
}
}
}

练习2:
计算1+2+3+…+100的和

代码
// for 循环的练习
public class ForLianXi{
public static void main(String[] args) {
// 要求 : 计算1+2+3+…+100的和
int sum = 0 ;// 定义一个1-100的累加总和
for( int i = 1 ; i <= 100 ; i++){
/*
sum = sum + 1 ; sum = 0 +1 =1 ;
i = 2 ; 2 <= 100
sum = sum + 2 = 1 + 2 = 3 ;
i = 3 ; 3 <= 100
sum = sum + 3 = 3 + 3 = 6…

		*/
	   sum = sum + i ;    
	}
    System.out.println(sum);// 5050
}

}

2.4 while循环
while循环的语法结构:

while(boolean类型的判断条件){
// 写反复执行的代码
}

解释说明:

  1. while : 关键字,表示循环
  2. 只要while小括号中的boolean类型结果为true,那么while大括号中的代码就会被执行

要求: 打印1-5的数字,使用while循环
代码
// while循环案例
public class WhileDemo{
public static void main(String[] args) {
// 要求: 打印1-5的数字,使用while循环

	for( int i = 1 ; i <= 5 ; i ++){
	  System.out.println(i);
	}

     /*
	  1. 将循环的初始化条件,写在while循环的外面
	  2. 将循环需要准守的条件,写在while的判断条件中
	  3. 初始化值的变化过程,写在while循环中
	 */
	int w = 1;
	while(w <= 5){
       System.out.println(w);
	   w ++;
	}
}

}

2.5 do…while循环(了解)
语法结构:
do{
// 需要反复执行的代码
}while(boolean类型判断条件);

解释说明:

  1. do : 关键字,执行,功能就是执行循环
  1. do,执行,先执行一次,不论while条件是否成立,都会先执行一次循环
  2. 然后,判断while中的判断条件,成立,那么继续执行do中的代码,直到while判断哪天交为false,整个do…while结束

代码
// do…while循环
public class DoWhileDemo{
public static void main(String[] args) {
do{
System.out.println(“Hello World!”);
}while(false);

	/*while(false){// 无法访问的语句,因为while循环的条件直接为false,该循环中的内   容,永远不会被执行到,因此报错
	   System.out.println("Hello");
	}*/	
}

}

2.6嵌套循环
有一个循环,循环内部逻辑恰巧又是另外一个循环
案例: 教练让学员跑圈,教练一共发出三次指令,每次指令,学员跑5圈,请将学员的跑圈过程打印出来
在这里插入图片描述

代码
// 嵌套循环
public class ForForDemo{
public static void main(String[] args) {
for( int i = 1 ; i <=3 ; i ++){// 教练发出指令的次数
for ( int j = 1 ; j <= 5 ; j ++){
System.out.println(“教练第”+i+“次发出指令,学员跑第”+j+“圈”);
}
}

   System.out.println("--------------");

   for( int i = 1 ; i <=3 ; i ++){// 教练发出指令的次数
	   int j = 1 ;
	   while( j <= 5){
	      System.out.println("while教练第"+i+"次发出指令,学员跑第"+j+"圈");
		  j ++ ;
	   }
	}
}

}

练习3:
请打印如下星星图案:






代码
// 循环打星星案例
public class PrintStar {
public static void main(String[] args) {
/*
说明: System.out.println 在数据后添加一次回车换行
System.out.print 表示在同一行进行数据的输出,输出数据后,没有回车换行
*/

    for(int j = 1 ; j <= 5 ; j ++){
	
	   // 需要反复执行的代码
	    for(int i = 1 ; i <= 4 ; i ++){
	
	        System.out.print("*");
	     }
        System.out.println();
	}	
}

}

2.7死循环
表示循环永远不结束,称为死循环,正常代码开发,规避死循环
造成死循环的原因: 循环的判断条件,永远为真true

for( ; ; ){

}

while(true){

}

代码
// 死循环 : 循环永远不结束,产生原因: 循环的判断条件永远为true
public class DeadFor {
public static void main(String[] args) {
// 在代码中,不要出现死循环
/while(true){
System.out.println(“Hello World!”);
}
/

	for( int i = 1 ; i <= 100 ; i --){
	    System.out.println(i);
	}
}

}

2.8 跳出循环
continue : 继续,一般作用在循环中,表示结束当前这一次循环,接着执行下一次循环
说明: continue 关键字之后的循环代码,在当前次循环不再执行,循环遇到continue,直接进行循环中的初始化变量的变化

break : 跳出循环,结束整个循环,break一次只能结束一个循环

continue代码
// continue : 结束本次循环,继续执行下一次循环
public class ContinueDemo{
public static void main(String[] args) {
// 要求: 将1-100中所有的偶数,打印出来
/*
分析:
1. 先获取到1-100的每一个数字,通过循环实现
2. 判断1-100中的而每一个数字,是不是偶数 , 数字需要与2取模运算
*/
for( int i = 1 ; i <= 100 ; i ++ ){
// 获取到的i值,需要判断一下,是不是偶数
if( i % 2 != 0){// i的值是奇数,不需要打印i值
continue;// 结束当前次循环,继续进行下一次循环
}
System.out.println(i);
}
}
}

break代码
// break : 表示结束整个循环(break一次只能结束一个循环)
public class BreakDemo{
public static void main(String[] args) {
// 要求: 打印1-100的数值,遇到16,就不需要再继续打印
for( int i = 1 ; i <= 100 ; i ++){
// 判断一下,现在的这个数值是不是16
if( i == 16 ){// 现在i的值等于16
break; // 结束整个for循环
}
System.out.println(i);
}
System.out.println(“Hello World!”);
for( int i = 1 ; i <=3 ; i ++){// 教练发出指令的次数3次
for ( int j = 1 ; j <= 5 ; j ++){// 教练让学员每次跑5圈,实际学生每次跑两圈
System.out.println(“教练第”+i+“次发出指令,学员跑第”+j+“圈”);
if( j == 2){
break;// 结束的是学员的跑圈循环,与外层的教练指挥次数循环无关
}
}
}
}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值