学习笔记——day04流程控制

整体结构图

顺序结构

程序进入主方法之后依次执行里面的代码。

选择结构

if

单分支

  • 语法结构:
     
if(表达式.boolean值){               
执行语句;            
}    
  • 执行顺序:
1:判定表达式的值,如果表达式的值位true执行对应的执行语句 
2:表达式值是false 整个if语句都不执行        
  • 注意事项:
 当if分支中存在单条语句时可以省略大括号。            
 当整个if的表达式无论真假,执行之后都会执行后续代码        
 以后多大数的逻辑不单单只有两种情况,有待加强。        
 单分支结构永远只能保证一种情况下会做什么操作。 
  • 代码
public class Demo01{    public static void main(String[] args){               
 if(4<3){           
  //System.out.println("我被执行了 if执行语句");            
  System.out.println("3");        }   
        System.out.println("我是main方法中的执行语句");   
         } 
 }

双分支

  • 语法结构:
if(boolean值表达式){                
执行语句1;            
}else{                
执行语句2;            
}        

  • 执行顺序:
1:判定表达式的结果,如果表达式的结果是true 执行对应的执行语句1 
2:如果表达式的结果是false 那么执行对应的执行语句2   
  • 注意事项:
可以省略大括号 保证执行语句只有一行即可 
整个判定结果结束执行,执行语句执行之后
继续执行后续代码 
  • 代码
public class Demo02{    
public static void main(String[] args){       
 //猜数小游戏       
  //声明一个变量存放结果       
   int result = 29;                
   //声明一个变量模拟存放用户输入的值       
    int inputNum = 30;                
    //String msg = result==inputNum?"恭喜你猜对了":"捞。。。";        //System.out.println(msg);       
     if(result==inputNum){           
      System.out.println("恭喜你猜对了");       
       }else{            
       System.out.println("捞。。。");       
        }               
         System.out.println("哈哈哈啊哈");                    
         } 
  }

多分支

  • 语法结构:

         if(表达式1){                
         执行语句1;           
          }else if(表达式2){                
          执行语句2;            
          }else if(表达式3){                
          执行语句3;           
           }else if(表达式4){                
           执行语句4;           
            }................{                       
             }else{                
             执行语句n;           
          } 
    
  • 执行顺序:

1:判定表达式的结果,如果表达式的结果是true执行对应的执行语句。整个多分支结果执行结束。          
2:依次判定后续的else if,只要有一个判定结果是true那么整个多分支结束。           
3:如果所有的判定条件都为假,执行最后的else内容。
  • 代码
/*
 随机生成一个分数,查看分数所在的分段。        
 90以上 -->  王者        
 80以上 -->  大师        
 70以上 -->  钻石        
 60以上 -->  铂金        
 其它   -->  倔强青铜                
 生成一个[20-99]之间的整数            
 Math.random();-->[0,1)*99;          
 [0,99)(int)(Math.random()*最大数)           
  [0,99](int)(Math.random()*最大数+1)           
   [20,99] Math.random()*80+20           
    [min,max] Math.random()*(max-min+1)+min; 
 */ 
public class Demo03{      
public static void main(String[] args){          
// 判定分数:          
int score =(int)(Math.random()*80+20);          
System.out.println("score="+score);        
  //判定分数  
       if(score>=90){             
        System.out.println("王者");         
         }else if(score>=80){             
          System.out.println("大师");         
           }else if(score>=70){              
           System.out.println("钻石");          
           }else if(score>=60){             
            System.out.println("铂金");         
             }else{              
             System.out.println("你的水平可能不适合这个游戏");         
              }     
         }  
    }  

switch

  • 语法结构
    switch(表达式){    
     case 值1:        
       执行语句1;       
        break;    
      case 值2:        
        执行语句2;       
         break;    
       case 值3:        
         执行语句3;        
         break;        
       .......            
       default:        
         执行语句3; 
       } 
首先计算switch中的表达式的值然后依次匹配对应的 case,如果匹配成功,执行对应的执行语句 
这里注意要通过break防止穿透 
如果所有的case都不匹配执行最后的default 
  • 注意事项
1:防止case穿透 
2: 利用case穿透做些文章 
3: 将没有罗列出来的情况通过default去编写 
4: switch只能做等值判定 if可以做区间判定 
5: default位置可以任意 一般放到最后 
6: switch表达式值不能是long float double boolean 类型
 jdk1.5之后允许switch中存放枚举类型enum 
 jdl1.7之后允许switch中存放String类型 
 保证case也是String类型 jdk12之后 
 修改switch的写法-->扩展练习 
  • 代码
public class Demo04{   
public static void main(String[] args){        
//声明一个月份       
 //int month = 9;
 //(int)(Math.random()*20+1);       
  //输出月份        
  //System.out.println(month);        
  String l = "12";                
  switch(l){              
  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;              
     deflt:                
     System.out.println("你眼睛卡吗?");               
     break;         
         }
}

循环结构

while

  • 语法结构

     	while(循环条件|表达式){
     		循环体;//执行语句
     	}
    
  • 执行顺序

     	1:判定循环条件,如果条件为真执行循环体1次
     	2:再次判定循环条件,直到循环条件不满足,整个循环结束。
    
  • 注意事项

     	凡是不确定循环次数就可以优先考虑while循环
    
  • 代码

/*计算1-100的和
		捞的方法:
				//计算1-100的和
				int sum = 0;
				
				int num = 1;
				sum = num+sum;
				
				num++;
				sum = num+sum;
				
				num++;
				sum = num+sum;
				
				num++;
				sum = num+sum;
				
				num++;
				sum = num+sum;

*/
public class Demo05{
	public static void main(String[] args){
		
		//1声明变量存放结果
		int sum = 0;
		//2声明变量存放1-100之间的数
		int num = 1;
		while(num<=100){
			sum+=num;
			num++;
		}
			
		System.out.println(num+"=="+sum);
		
		
	}
}

do-while

  • 语法结构

     	do{
     		循环体;
     	}while(循环条件);
    
  • 执行顺序

     	1:先执行循环提一次
     	2:再判定循环条件,如果条件为真执行循环体1次
     	3:再次判定循环条件,直到循环条件不满足,整个循环结束。
    
  • 注意事项

     	while先判定在执行
     	do-while先执行在判定
     	
     	考试  补考  清考
    
  • 代码

public class Demo06{
	public static void main(String[] args){
		
		//1声明变量存放结果
		int sum = 0;
		//2声明变量存放1-100之间的数
		int num = 1;
		
		do{
			sum+=num;
			num++;
		}while(num<=100);
			
		System.out.println(num+"=="+sum);
		
		
	}
}

for

  • 语法结构

     	for(循环变量;循环条件;改变循环变量的表达式){
     		循环体;
     	}
    
  • 执行顺序

     	1:声明循环变量 (降低生命周期 调高内存利用率)
     	2:判定循环条件 如果循环条件为真,执行循环体一次
     	3:改变循环变量的值,判定循环条件,直到循环条件不满足
     	整个循环结束
    
  • 注意事项

     	1:确定循环次数可以使用for循环
    
  • 代码

public class Demo07{
	public static void main(String[] args){
		//声明存放结果
		int sum = 0;
		for(int num=1;num<=100;num++){
			sum += num;
		}
		System.out.println(sum+"=="+num);
	
	}
}
/**
	计算斐波那锲数列 兔子问题
		1 1 2 3 5 8 13 。。。。
	计算第20个数字是多少?
		第一项:1
		第二项:1
		第三项:前两项的和
		
		第20项: 第19+第18
	
	int num1 = 1;
		int num2 = 1;
		
		int num3 = num1+num2;
		
		num1 = num2;// 第一项里存放的是第二项的值
		num2 = num3;//第二项里存放的是第三项的值
		num3 = num1+num2;
		
		num1 = num2;// 第一项里存放的是第二项的值
		num2 = num3;//第二项里存放的是第三项的值
		num3 = num1+num2;
*/
public class Demo08{
	public static void main(String[] args){
		
		//声明前2项的值
		int num1 = 1;
		int num2 = 1;
		int num3 = 0;
		for(int i = 3;i<=20;i++){
			num3 = num1+num2;
			//交换位置
			num1 = num2;
			num2 = num3;
		}
		
		System.out.println("第20项是:"+num3);
		
		
	}
}
/**
罗列1-100之间能被5整除的数  且3个一行

*/
public class Demo10{
	public static void main(String[] args){
		//声明一个变量 计数器
		int count = 0;
	
		//1:通过for循环产生1-100之间的数字
		for(int i = 1;i<=100;i++){
			//判定是否可以被5整除
			if(i%5==0){
				System.out.print(i+"\t");
				count++;
				//判定当前能被5整除的数字的个数 是否是3 的倍数
				if(count%3==0){
					System.out.println();
				}
			}
		}
	}

}
  • 注意

跳出循环的方法

  • continue
tips: 
continue:跳过本次循环 这次循环不执行 跳到下次循环开始

代码:

/**
	1:罗列1-100之间能被5整除的数 
	
分析需求:
	1:罗列出来1-100之间的数字  
	2:不断对于产生的数字对5取余数 如果==0 可以被5整除 显示
	   不能被5整除,不做事


	
*/
public class Demo09{
	public static void main(String[] args){
		//编写for循环产生1-100之间的数字
		for(int i = 1;i<=2;i++){
			//判定 对于i进行判定
			if(i%5==0){
				System.out.print(i+"\t");
			}else{
				continue;
			}			
			//System.out.println("a");
		}
	}
}
  • break
tip:
break: switch 防止穿透 跳出当前循环 break所在的循环

代码:

public class Demo04{   
public static void main(String[] args){        
//声明一个月份       
 //int month = 9;
 //(int)(Math.random()*20+1);       
  //输出月份        
  //System.out.println(month);        
  String l = "12";                
  switch(l){              
  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;              
     deflt:                
     System.out.println("你眼睛卡吗?");               
     break;         
         }
}
  • return
tip:结束当前方法

代码:

/**
	计算1-100的和,当累加到3000时,
	问累加到的数字是多少。
	*/
public class Demo11{
	public static void main(String[] args){
		//声明一个变量存放累加的和
		int sum = 0;
		//通过for循环 做1-100之间的累加和
		for(int i = 1;i<=100;i++){
			sum += i;
			//判定sum的值
			if(sum>=3000){
				System.out.println("累加到"+i+"的值,和是:"+sum);
				return;
			}
		}
		System.out.println("我是for循环外面的代码");
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值