您的位置 首页 java

Java入门到高级学习-C4 Java流程控制-分支结构

Hello All,今天为大家带来的是 java 流程控制第一部分的学习,即分支结构的学习。Java流程控制当中主要包含了分支结构和循环结构(其中夹杂了break、continue等跳转语句),流程控制在 编程语言 当中控制程序运行步骤。其中分支结构通俗来讲就是条件判断语句, Java 提供了两种分支结构,即if-else结构和 Switch -case结构。本篇主要通过几个例子给大家简单介绍这两种分支结构

一、if-else结构

这是最常见的条件判断语句,在各种语言当中均有它的身影,它的基本结构有三种:

 1.单条件判断
if(条件表达式){
 执行表达式;
 }
 
 2.二选一
 if(条件表达式){
 执行表达式1;
 }else{
 执行表达式2;
 }
 
 3.n选1;
 if(条件表达式){
 执行表达式1;
 }else if(条件表达式){
 执行表达式2;
 }else if(条件表达式){
 执行表达式3;
 }
 ...
 else{
 执行表达式n;
 }  

需要注意的是,当变量满足某个条件并执行相应表达式后,将会跳出 if 结构,不再继续执行或判断:

  1. else结构是可选的(可写可不写);
  2. if-else可以嵌套使用;
  3. 如果if-else结构中的执行语句只有一行时,{}可以省略,但 不建议省略
  4. 针对于条件表达式:(考虑到会跳出结构)
  • 如果多个条件表达式之间为互斥关系,则判断语句和执行语句的书写顺序无影响;
  • 若多个条件表达式之间有交集,需要根据实际情况考虑书写顺序;
  • 若多个条件表达式之间有包含关系,需要把范围小的声明在范围大的上面;
 //if-else基础结构代码示例

public class IfTest {
public  static   void  main(String[] agrs) {
//举例一
int heartBeats = 90;
if(heartBeats<60 || heartBeats > 100) {
System.out.println("需要进一步检查");
}
System.out.println("over");

//举例二
int ages = 75;
if(ages<18) {
System.out.println("young");
}else {
System.out.println("adult");
}

//举例三
if(ages<0) {
System.out.println("不合法");
}else if (ages<18) {
System.out.println("young");
}else if (ages<60) {
System.out.println("adult");
}else {
System.out.println("old");
}
}
}  

下述案例中夹杂了一个小知识点,如果涉及到程序与用户通过键盘输入的交互,可以使用java.util.Scanner类,关于类的调用有三步,1.调用类:import java.util.Scanner;2.类的实例化:Scanner scan = new Scanner(System. in );3.调用类的方法: int num = scan.nextInt();

 //代码示例
/*
 从键盘获取值:需要使用类Scanner
 具体使用步骤:
 1.导包:import java.util.Scanner;
 2.实例化:Scanner scan = new Scanner(System.in);
 3.调用方法,来获取指定类型的变量;int num = scan.nextInt();// char 型,scanner未提供相应方法,用 字符串 替代
 注意:需要按照根据相应方法类型要求来键入指定类型的值,如果输入的数据类型与要求的数据类型不匹配时,可能会编译错误: Input MismatchExce导致程序终止
 */import java.util.Scanner;

public class IfTest2 {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);//实例化

System.out.println("请输入你的姓名:");
String name = scan.nextLine();

System.out.println("请输入你的年龄:");
int age = scan.nextInt();

System.out.println("请输入你的体重:");
double weight = scan.nextDouble();

System.out.println("你是否单身:");
 boolean  yn = scan.nextBoolean();

System.out.println("name:"+name+"age:"+age+"weight"+weight+"islove"+yn);
}
}
  

例题,需求:编写程序,从键盘键入三个整数,分别存入变量num1,num2,num3,

对它们进行排序,并且从小到大输出,大家可以思考下如何处理该需求,代码示例如下。

 import java.util.Scanner;
public class IfTest3 {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int num1 = scan.nextInt();
int num2 = scan.nextInt();
int num3 = scan.nextInt();
if(num1 >= num2){
num1 = num1 + num2;
num2 = num1 - num2;
num1 = num1 - num2;
}
if(num1 > num3) {
num1 = num1 + num3;
num3 = num1 - num3;
num1 = num1 - num3;
System.out.println(num1+","+num2+","+num3);
}else if(num2 < num3) {
System.out.println(num1+","+num2+","+num3);
}else {
num3 = num2 + num3;
num2 = num3 - num2;
num3 = num3 - num2;
System.out.println(num1+","+num2+","+num3);
}
}
}  

二、switch-case结构

 switch-case结构格式:

 switch(表达式){
 case 常量1:
 语句1;
 //break;
 case 常量2:
 语句2;
 //break;
 ... ...
 case 常量N:
 语句N;
 //break;
 default:
 语句;
 //break;  

说明:

  1. 根据switch表达式的值,按照从上到下的顺序依次匹配case中的常量,一旦匹配成功,则进入相应case中的执行语句当该case执行语句执行结束后, 不会跳出结构(这是与if-else结构的区别) ,仍然执行剩下其他case中的执行语句,直到遇到break或switch-case结构结束为止
  2. 如果想要实现多选一的效果,需要在case执行语句中添加 break 关键词
  3. switch中的表达式, 不为条件表达式(即结果不为boolean型) ,只能是如下6种数据类型之一: byte short 、char、int、枚举类型(jdk5.0之后新增)、string类型(jdk7.0之后新增);
  4. case之后只能声明常量, 不能声明范围
  5. break关键字在switch-case结构中是 可选 的,不会引起编译错误;
  6. default类似if-else结构中的else,default结构也是可选的,且 位置是灵活的
  7. 如果case中的多个执行语句相同,可以直接合并(等同于执行语句为空,且不加break);
  8. switch-case结构中可以嵌套if-else结构;
  9. 凡是可以使用switch-case结构的,都可以转换为if-else结构,反之不成立(switch表达式有要求);
  10. 当写分支结构时,当发现既可以使用switch-case又可以使用if-else结构,同时case枚举情况不多,优先选择switch-case结构
  11. switch-case相较于if-else结构,执行效率稍高;
 public class SwitchTest {
public static void main(String[] args) {
int  number  = 2;
switch(number) {
case 0:
System.out.println(" zero ");
case 1:
System.out.println("one");
case 2:
System.out.println("two");
case 3:
System.out.println("three");
 default:
System.out.println("other");
}
}
}

/*不加break,输出结果为:(因为不会跳出 结构体 )

two
three
other

*/  

例题,需求使用switch-case结构,键盘获取学生成绩(int型,0-100),大于60分,输出合格,否则输出不及格。

分析发现,学生成绩的枚举值比较多,且switch-case结构中case只能声明常量,不能声明范围,因此,如果暴力穷举,则效率非常低,使用if-else结构对范围进行判断更为方便,必须使用switch-case结构则需要考虑算法操作,例如可以将学生成绩除以10,则将100个 枚举值 简化为11个(0-10),而除以60,则可以将枚举值简化为2个(0和1)。

 import java.util.Scanner;
public class SwitchTest2 {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
//第一题
int score = scan.nextInt();
switch (score / 60) { //表达式只能是六种类型之一,不能是boolean型;
case 1: //case后只能接常量,不能为范围;
System.out.println("合格");
break;
default:
System.out.println("不及格");
break;
}
}  

以上,就是本篇的全部内容了,下篇将会为大家继续介绍Java流程控制当中的循环结构,感谢大家阅读,欢迎大家点赞,评论,收藏和关注!

文章来源:智云一二三科技

文章标题:Java入门到高级学习-C4 Java流程控制-分支结构

文章地址:https://www.zhihuclub.com/185958.shtml

关于作者: 智云科技

热门文章

网站地图