侧边栏壁纸
博主头像
coydone博主等级

记录学习,分享生活的个人站点

  • 累计撰写 306 篇文章
  • 累计创建 51 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

流程控制

coydone
2020-12-27 / 0 评论 / 0 点赞 / 367 阅读 / 4,981 字 / 正在检测是否收录...
温馨提示:
本文最后更新于 2022-05-01,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

概述

在Java中有三种流程控制结构:顺序结构、选择结构、循环结构。

选择结构

if控制语句

1、简单if

//语法:
if(条件判断表达式){
    执行语句     
}

如果条件判断的表达式返回值是true则可以执行if内部的语句,否则如果是 false就不可以执行。条件表达式的结果一定是true或者false。

/*
   实现程序如果分数大于等于60就及格
   if(条件判断表达式){
       执行语句
   }
   如果if没有{}作为if体,if下面的第一行就是if体
*/
public static void main(String[] args) {
	//定义一个变量存储分数
    int score = 80;
    if(score>=60){
	    System.out.println("及格");
	}
	System.out.println("程序结束!");
}       

2、if…else

语法:

if(条件判断表达式){
    执行语句      
}else{      
    执行语句      
}
public static void main(String[] args) {
	//定义一个变量存储分数
	int score = 80;
	if(score>=60){
		System.out.println("及格");
	}else {
		System.out.println("不及格");
	}
}

3、多重 if….else

//语法:
if(条件判断表达式){        
    执行语句     
}else if(条件表达式1){       
    执行语句      
}else if(条件表达式2){       
    ...   
}else{       
}

注意:多重if当遇到第一个满足的表达式条件时执行当前的if语句,就不会再向下去执行。

/*如果成绩大于等于90分且小于等于100分,输出A级,否则如果大于等于80  分,输出B级
    否则如果大于等于70分,输出C级,否则如果大于等于60分,输出D级,
    低于60分,输出E级
 */
public static void main(String[] args) {
    int score = 85;
    if(score>=90&&score<=100){
        System.out.println("A级");
    }else if(score>=80){
        System.out.println("B级");
    }else if(score>=70) {
        System.out.println("C级");
    }else if(score>=60) {
        System.out.println("D级");
    }else {
        System.out.println("E级");
    }
    //输出结果:B级
}

4、嵌套if

在if控制语句中又包含一个或多个if控制语句。嵌套if可以通过外层语句和内层语句的协作来增加程序的灵活性。

//语法格式:
if(表达式1){       
    if(表达式2){
        语句
    }   else{
        语句
    }               
}else if(表达式3){     
    语句              
}else{       
    语句              
}
/*
    如果今天是周六或者周日,则外出。如果气温在30度以上,去游泳,否则去爬山。
    如果今天不是周六或者周日,就要工作。如果天气好,去谈业务;否则在公司。
*/
public static void main(String[] args) {
     //外层if判断是否是周六或者周日,内层if判断天气
    int day = 6;//周六
    int temp = 32;//温度32度
    String weather = "天气好";//天气好
    if(day == 6 || day == 7){
        if(temp>=30){
            System.out.println("游泳");
        }else {
            System.out.println("爬山");
        }
    }else {
        if("天气好".equals(weather)){
            System.out.println("谈业务");
        }else {
            System.out.println("在公司");
        }
    }
    //打印结果:游泳
}

switch语句

Switch:由上到下用switch中的表达式和值进行比较,如果匹配成功就执行case后的语句,在执行break的时跳出switch,如果一个也没有匹配上就执行default默认情况。

Switch(表达式){    
    case 常量1:   
        执行语句1;
        break;  
    case 常量2:
        执行语句2;
        break;  
        ... 
    default:    
        执行语句 ;  
        break;
}

break可以省略不会报错,如果省略就会穿透执行语句(不管是否能匹配上),直到遇到一个break才会跳出,所以我们不建议省略break。在jdk1.7之前,swtich的表达式只能是整型、字符型或枚举类型。但是jdk1.7后可以使用String。

如果与任何一个case后的常量值都不匹配,就执行default中的语句。

注意:Switch和多重if的区别:If可以做等值判断也可以做区间判断。Switch只能做等值判断,不能做区间判断。

//1 --> 周一
//2-->周二
//3 --> 周三
//4-->周四
// 5 --> 周五
// 6、7-->周末
public static void main(String[] args) {
    int day = 5;
    switch(day){
        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:
        case 7:
            System.out.println("周末");
            break;
        default:
            System.out.println("数字不是1到7之间的整数!");
    }
}

三元运算符

语法:逻辑表达式2 ? 表达式1 : 表达式2

?前面的逻辑表达式如果运算的结果是 true,整个表达式的结果就是表达式1,?前面的逻辑表达式如果运算的结果是false,整个表达式的结果就是表达式2。

注意:三元运算符适合两个值的判断,适合来代替if…else形式。

public static void main(String[] args) {
    //1-->男;其他-->女
    int gender = 1;
    //        if(gender==1){
    //            System.out.println('男');
    //        }else {
    //            System.out.println('女');
    //        }
    char res = gender==1?'男':'女';
    System.out.println(res);
}

循环结构

循环:就是重复发生的过程(循环一般有重复的前提条件)。

循环分类:while循环、do-while循环、for循环:简化while语法,执行流程同while、增强for循环:针对数组和集合。

while循环

语法:

while(表达式){ 
    循环体 
}

表达式结果如果是true那么就执行循环体,如果是false就结束循环。

先判断,后执行

public static void main(String[] args) {
    //1+2+3+···+100的求和计算
    int i = 1;
    int sum = 0;//定义变量存储总和
    while (i<=100){
        sum+=i;
        i++;
    }
    System.out.println(sum);
}

while(true){},即条件为true时,会出现死循环。

规避死循环/无限循环:每次循环,修改循环变量的值。

do…while循环

语法:

do{     
    循环体
}while(表达式);

先执行,后判断

注意:do…while 和 while,前者是先执行循环体,后者是先判断在执行循环体。

public static void main(String[] args) {
    //1+2+3+···+100的求和计算
    int i = 1;
    int sum = 0;//定义变量存储总和
    do {
        sum+=i;
        i++;
    }while (i<=100);
    System.out.println(sum);//5050
}

for循环

语法:

for(表达式1; 表达式2; 表达式3){      
    循环体    
}

表达式1(变量初始化):计数器的初始化,它只初始化一次。

表达式2(循环条件):循环条件的判断,多次执行。

表达式3(修改循环变量的值):修改计数器,多次执行。

//1+2+3+···+100的求和计算
int sum = 0;//定义变量存储总和
for (int i =1;i<=100;i++){
    sum+=i;
}
System.out.println(sum);//5050

多重循环(嵌套循环)

循环语句内可以再包含循环语句,不同的循环语句可以相互嵌套。

public static void main(String[] args) {
    /*打印5行5列的*
        *****
        *****
        *****
        *****
        *****
      */
    for (int i=0;i<5;i++){
        //外层打印5行
        System.out.println();
        for (int j=0;j<5;j++){
            //打印一个*不换行
            System.out.print("*");
        }
    }
}

跳转语句

1、break

break在循环中的作用是终止当前循环,在switch中是终止switch。

break用来跳出循环和switch。

//输出数字1——10,若遇到4的倍数程序自动退出
for (int i = 1;i<=10;i++){
    if(i%4==0){
        break;
    }
    System.out.println(i);//1  2  3
}

2、continue

continue只能用在循环中,也是来控制循环,在某次循环的时候放弃,后续的接着循环。

即本次循环后面的代码不执行,直接进入循环条件的位置,开启新一轮循环。

//输出数字1——10中非4的倍数的数字
for (int i = 1;i<=10;i++){
    if(i%4==0){
        continue;
    }
    System.out.println(i);//1  2  3  5  7  9  10
}

3、return

结束当前方法的执行并退出返回到调用该方法的语句处。

public static void main(String[] args) {
    //输出数字1——10中4以下的数字
    for (int i = 1;i<=10;i++){
        if(i%4==0){
            return;
        }
        System.out.println(i);
    }
    System.out.println("循环结束");
}
//打印结果:1  2  3
//当i=4时,执行return语句,结束当前循环,
//也结束了整个方法的执行,所以没有打印“循环结束”
0

评论区