JAVA java学习(30)——————java流程控制之分支结构,if(){};if(){}else{};if(){}else if(){}else{};

流程控制语句是用来控制程序中各语句执行顺序的语句,可以把语句组合成能完成一定功能的小逻辑模块。其流程控制方式采用结构化程序设计中规定的三种基本流程结构,即:顺序结构、分支结构循环结构
在这里插入图片描述

导读:Java 支持两种选择语句:if 语句和 switch 语句。其中 if 语句使用布尔表达式或布尔值作为分支条件来进行分支控制,而 switch 语句则用于对多个整型值进行匹配,从而实现分支控制。这些语句允许你只有在程序运行时才能知道其状态的情况下,控制程序的执行过程。

选择结构(也叫分支结构)解决了顺序结构不能判断的缺点,可以根据一个条件判断执行哪些语句块。选择结构适合于带有逻辑或关系比较等条件判断的计算。

if(){}单分支结构

if 语句是使用最多的条件分支结构,它属于选择语句,也可以称为条件语句。

一个 if 语句包含一个布尔表达式和一条或多条语句。

if 语句的语法如下:

if(布尔表达式)
{
    
    
   //如果布尔表达式为true将执行的语句
}

如果布尔表达式的值为 true,则执行 if 语句中的代码块,否则执行 if 语句块后面的代码。

其中“条件表达式”和“语句块”是比较重要的两个地方。

  • 条件表达式:条件表达式可以是任意一种逻辑表达式,最后返回的结果必须是一个布尔值。取值可以是一个单纯的布尔变量或常量,也可以是使用关系或布尔运算符的表达式。如果条件为真,那么执行语句块;如果条件为假,则语句块将被绕过而不被执行。
  • 语句块:该语句块可以是一条语句也可以是多条语句。如果仅有一条语句,可省略条件语句中的大括号 {}。当从编程规范角度不要省略大括号,省略大括号会使程序的可读性变差。

if 条件语句的运行流程如图所示。
在这里插入图片描述

例1:


public class Test {
    
    
 
   public static void main(String args[]){
    
    
      int x = 10;
 
      if( x < 20 ){
    
    
         System.out.print("这是 if 语句");
      }
   }
}

以上代码编译运行结果如下:

这是 if 语句

例2:
随机产生三个随机数,求和,根据和的大小选择不同的操作。
Tip:了解Math.random()相关方法及应用
注意:Math.random();产生0-1之间的一个数字,含0不含1。[0,1)

/*
	功能:随机产生3个随机数(1-6),[0,1)*6---->(int)[0,6)---->[0,5]+1--->[1,6]
			求和,
			根据和的不同有不同的奖项
	技能点:IF单分支结构
	1.if语句的条件表达式可以是关系表达式或者逻辑表达式,结果肯定是boolean值
	2.如果条件为true,执行该分支。如果条件为假,不执行该语句
	3.如果语句多于1条,必须使用{}。如果语句是1条,{}可以省略,但是不建议省略
 */
public class YuFa1 {
    
    

	public static void main(String[] args) {
    
    
		//随机产生3个随机数(1-6),
		int num1=(int)((Math.random()*6)+1);
		int num2=(int)((Math.random()*6)+1);
		int num3=(int)((Math.random()*6)+1);
		//输出三个随机数
		System.out.println("num1="+num1);
		System.out.println("num2="+num2);
		System.out.println("num3="+num3);
		//求和
		int sum = num1+num2+num3;
		System.out.println("求和sum="+sum);
		//根据和的不同有不同的奖项
		if(sum>=16){
    
    
			System.out.println("特等奖 500万");
			System.out.println("恭喜,做梦了吧");
		}
		
		if(sum<16 && sum>12){
    
    
			System.out.println("一等奖 2元");
		}
		
		if(sum<=12){
    
    
			System.out.println("再来一次");
		}
		
	}
}

结果:
在这里插入图片描述在这里插入图片描述
例3:
编写一个 Java 程序,允许用户从键盘输入一个数字,再判断该数是否大于 100。使用 if 语句的实现代码如下:

import java.util.Scanner;

public class YuFa2 {
    
    

	public static void main(String[] args) {
    
    
	    System.out.println("请输入一个数字:");
	    s = new Scanner(System.in);
	    int num = s.nextInt(); // 接收键盘输入数据
	    // 判断用户输入的数据是否大于100
	    if (num > 100) {
    
    
	        System.out.println("输入的数字大于100");
	    }
	    // 判断用户输入的数据是否等于100
	    if (num == 100) {
    
    
	        System.out.println("输入的数字等于100");
	    }
	    // 判断用户输入的数据是否小于100
	    if (num < 100) {
    
    
	        System.out.println("输入的数字小于100");
	    }

	}

}

结果:
在这里插入图片描述注:eclipse里用Scanner提示无法解析此类型
鼠标移动在Scanner上会出现导包的提示
在这里插入图片描述导入第一个就可以了

例4:
假设有 num1 和 num2 两个变量,它们的值分别是 1997和 1001。下面编写程序,要求使用 if 语句判断 num1 和 num2 的大小关系,并输出比较结果。


public class YuFa3 {
    
    

	public static void main(String[] args) {
    
    
	    int num1 = 1997;
	    int num2 = 1001;
	    if (num1 > num2) {
    
    
	        System.out.println("num1大于num2");
	    }
	    if (num1 == num2) {
    
    
	        System.out.println("num1等于num2");
	    }
	    if (num1 < num2) {
    
    
	        System.out.println("num1小于num2");
	    }

	}

}

结果:
在这里插入图片描述
该段选择语句判断了 num1 值和 num2 值的大于、等于和小于关系。此处 num1 为 1997,num2 为 1001,所以执行后会输出“num1 大于 num2”。

例5:
登录系统中要求用户名、密码和验证码都必须正确,否则将显示登录失败及错误提示


public class YuFa4 {
    
    

	public static void main(String[] args) {
    
    
	    String username = "admin"; // 用户名
	    String userpass = "123456"; // 密码
	    String code = "0000"; // 验证码
	    if (username != "admin" && userpass != "123456" && code != "0000") {
    
    
	        System.out.println("登录失败!");
	        System.out.println("请检查输入的用户名、密码和验证码是否正确!");
	    }
	    //成功了去到后台....
	}

}

总结:if(){}单分支结构
1.if语句的条件表达式可以是关系表达式或者逻辑表达式,结果肯定是boolean值
2.如果条件为true,执行该分支。如果条件为假,不执行该语句
3.如果语句多余1条,必须使用{}。如果语句是1条,{}可以省略,但是不建议省略。

缺点:如果已经满足了某个条件,后续的if语句还执行判断,多余的操作,效率低下。

if(){}else{}双分支选择结构

if 语句后面可以跟 else 语句,当 if 语句的布尔表达式值为 false 时,else 语句块会被执行。

if(){}else{}用法如下:

    if (表达式) {
        语句块1;
    } else {
        语句块2;
    }

if(布尔表达式){
    
    
   //如果布尔表达式的值为true
}else{
    
    
   //如果布尔表达式的值为false
}

在上述语法格式中,如果 if 关键字后面的表达式成立,那么就执行语句块 1,否则的话则执行语句块 2,其运行流程如图所示。
在这里插入图片描述
例6:


public class Test {
    
    
 
   public static void main(String args[]){
    
    
      int x = 30;
 
      if( x < 20 ){
    
    
         System.out.print("这是 if 语句");
      }else{
    
    
         System.out.print("这是 else 语句");
      }
   }
}

以上代码编译运行结果如下:

这是 else 语句

例7:
在例 4中为实现比较 num1 和 num2 的大小,使用了 3 个 if 条件语句分别判断大于、等于和小于的情况。下面使用 if…else 双条件来实现,具体代码如下:


public class YuFa5 {
    
    

	public static void main(String[] args) {
    
    
		int num1 = 1997;
	    int num2 = 1001;
    	// 如果num1等于num2
	    if (num1 == num2) {
    
    
	        System.out.println("num1等于num2");
	    }
	    //如果num1大于num2
	    if (num1 > num2) {
    
    
	        System.out.println("num1大于num2");
	    }else{
    
    
	    	//否则就是num1小于num2
	    	System.out.println("num1小于num2");
	    }
	    
	}

}

双条件语句减少了代码的编写量,同时增强了程序的可读性。简化后的结果还是一样,执行后会输出“num1 大于 num2”。

例8:
给出半径,判断周长是否大于面积

/**
技能点:if...else双分支结构
特点:
只要满足条件,那么满足条件的第一个多个单分支的语句就会执行并结束判断,而后面的语句将不再执行。
*/

public class YuFa6 {
    
    

	public static void main(String[] args) {
    
    
		 //1.准备数据
		double r = 4 * Math.random();
		double area = Math.PI * Math.pow(r, 2);
		double circle = 2 * Math.PI * r;

		System.out.println("半径为:"  + r);
		System.out.println("面积为: " + area);
		System.out.println("周长为: " + circle);

		if(area >= circle) {
    
    
			System.out.println("面积大于等于周长");
		} else {
    
    
			System.out.println("周长大于面积");
		}

	}

}

结果:
在这里插入图片描述在这里插入图片描述

if(){}else if(){}else{}多分支选择结构

if 语句后面可以跟 else if…else 语句,这种语句可以检测到多种可能的情况。

if 语句的主要功能是给程序提供一个分支。然而,有时候程序中仅仅多一个分支是远远不够的,甚至有时候程序的分支会很复杂,这就需要使用多分支的 if…else if 语句。

if…else if语法格式如下:

if(布尔表达式 1){
   //如果布尔表达式 1的值为true执行代码
}else if(布尔表达式 2){
   //如果布尔表达式 2的值为true执行代码
}else if(布尔表达式 3){
   //如果布尔表达式 3的值为true执行代码
}
......
else {
   //如果以上布尔表达式都不为true执行代码
}

解析:

    if(表达式1) {
    
    
        语句块1;
    } else if(表达式2) {
    
    
        语句块2;
    ...
    } else if(表达式n) {
    
    
        语句块n;
    } else {
    
    
        语句块n+1;
    }

可以看出,else-if 结构实际上是 if-else 结构的多层嵌套。明显的特点就是在多个分支中只执行一个语句组,而其他分支都不执行,所以这种结构可以用于有多种判断结果的分支中。

在使用 if…else if 语句时,依次判断表达式的值,当某个分支的条件表达式的值为 true 时,则执行该分支对应的语句块,然后跳到整个 if 语句之外继续执行程序。如果所有的表达式均为 false,则执行语句块 n+1,然后继续执行后续程序,其运行流程如图 所示。

在这里插入图片描述例9:
同样以比较 num1 和 num2 的大小为例,使用 if…else if 多条件的实现代码如下:

    public static void main(String[] args) {
    
    
        int num1 = 1997;
        int num2 = 1001;
        if (num1 == num2) {
    
     // 如果num1等于num2
            System.out.println("num1等于num2");
        } else if (num1 > num2) {
    
     // 如果num1大于num2
            System.out.println("num1大于num2");
        } else {
    
     // 否则就是小于
            System.out.println("num1小于num2");
        }
    }

例10:
同样随机产生三个随机数,求和,根据和的大小选择不同的操作。

public class YuFa1 {
    
    

	public static void main(String[] args) {
    
    
		//随机产生3个随机数(1-6),
		int num1=(int)((Math.random()*6)+1);
		int num2=(int)((Math.random()*6)+1);
		int num3=(int)((Math.random()*6)+1);
		//输出三个随机数
		System.out.println("num1="+num1);
		System.out.println("num2="+num2);
		System.out.println("num3="+num3);
		//求和
		int sum = num1+num2+num3;
		System.out.println("求和sum="+sum);
		//根据和的不同有不同的奖项
		if(sum>=16){
    
    
			System.out.println("特等奖 500万");
			System.out.println("恭喜,做梦了吧");
		}else if(sum<16 && sum>=12){
    
    
			System.out.println("一等奖 2元");
		}
		else if(sum<12 && sum>8){
    
    
			System.out.println("二等奖 1元");
		}else{
    
    
			System.out.println("再来一次!");
		}
		
	}
}

在这里插入图片描述
例11:
假设某学校对成绩的判断标准是:不低于 90,可以评为优秀;低于 90 但不低于 80,可以评为良好;低于 80 但不低于 60,可以评为中等;否则评为差。

import java.util.Scanner;

public class YuFa8 {
    
    

	private static Scanner input;

	public static void main(String[] args) {
    
    
	    System.out.println("请输入考试成绩:");
	    input = new Scanner(System.in);
	    int score = input.nextInt(); // 接收键盘输入数据
	    if (score >= 90) {
    
     // 考试成绩>=90
	        System.out.println("优秀");
	    } else if (score >= 80) {
    
     // 90>考试成绩>=80
	        System.out.println("良好");
	    } else if (score >= 60) {
    
     // 80>考试成绩>=60
	        System.out.println("中等");
	    } else {
    
     // 考试成绩<60
	        System.out.println("差");
	    }

	}

}

在这里插入图片描述
例12:
输入四个季节:如果春天,输出“春暖花开”,如果是夏天,输出“夏日炎炎”,如果是秋天,则输出"秋高气爽",如果是冬天,则输出"安静祥和"。

import java.util.Scanner;

public class YuFa9 {
    
    

	private static Scanner input;
	
	public static void main(String[] args) {
    
    
		System.out.println("请输入季节:");
	    input = new Scanner(System.in);
	    String score = input.next(); // 接收键盘输入数据
	    if (score.equals("春天")) {
    
     
	        System.out.println("春暖花开");
	    } else if (score.equals("夏天")) {
    
     
	        System.out.println("夏日炎炎");
	    } else if (score.equals("秋天")) {
    
    
	        System.out.println("秋高气爽");
	    } else if(score.equals("冬天")) {
    
     
	        System.out.println("安静祥和");
	    }

	}

}

猜你喜欢

转载自blog.csdn.net/qq_43434300/article/details/113742016
今日推荐