好久不见,甚是想念!
大家好!
我是微风洋洋 今天这篇文章就是来和大家详细聊聊Java程序流程控制中的分支结构,希望大家读完有所收获,那我辛苦码字也就值了。如果你觉得对你有一丢丢启发的话,不妨 点赞、收藏、关注支持一下,你的支持将是我继续创作的最大动力。下一篇将介绍Java循环结构,不见不散~~~
流程控制语句是用来控制程序中各语句执行顺序的语句,可以把语句组 合成能完成一定功能的小逻辑模块。
其流程控制方式采用结构化程序设计中规定的三种基本流程结构,即:
顺序结构
程序从上到下逐行地执行,中间没有任何判断和跳转。分支结构
根据条件,选择性地执行某段代码。 有if…else和switch-case两种分支语句。循环结构 根据循环条件,重复性的执行某段代码。 有while、do…while、for三种循环语句。
注:JDK1.5提供了foreach循环,方便的遍历集合、数组元素。
Java中定义成员变量时采用合法的前向引用。如:
public class Test{
int num1 = 12;
int num2 = num1 + 2;
}
错误形式:
public class Test{
int num2 = num1 + 2; int num1 = 12;
}
if语句三种格式:
分支结构:if-else使用说明
如何从键盘获取不同类型的变量:需要使用Scanner类
命令行具体实现步骤:
1.导包:import java.util.Scanner;
2.Scanner的实例化:Scanner scan = new Scanner(System.in);
3.调用Scanner类的相关方法(next()/nextXxx),来获取指定类型的变量
对char型的获取,Scanner没有提供相关的方法,只能获取一个字符串
package com.weifengyangyang.contact; //1.导包:import java.util.Scanner; import java.util.Scanner; public class ScannerTest { public static void main(String[] args){ //2.Scanner的实例化:Scanner scan = new Scanner(System.in); Scanner scan = new Scanner(System.in); //3.调用Scanner类的相关方法(next()/nextXxx),来获取指定类型的变量 System.out.println("请输入你的姓名"); String name = scan.next(); System.out.println(name); System.out.println("请输入你的芳龄"); int age = scan.nextInt(); System.out.println(age); System.out.println("请输入你的体重"); double weight = scan.nextDouble(); System.out.println(weight); System.out.println("你是否相中我了呢?(true/false)"); boolean isLove = scan.nextBoolean(); System.out.println(isLove); //对char型的获取,Scanner没有提供相关的方法,只能获取一个字符串 System.out.println("请输入你的性别:(男/女)"); String gender = scan.next(); char genderChar = gender.charAt(0);//获取索引为0位置上的字符 System.out.println(genderChar); } }
注意:需要根据相应的方法输入指定类型的值。如果输入的数据类型与要求的类型不匹配时,会报异常,程序终止
例1.岳小鹏参加Java考试,他和父亲岳不群达成承诺:如果:
成绩为100分时,奖励一辆BMW;
成绩为(80,99]时,奖励一台iphone xs max;当成绩为[60,80]时,奖励一个 iPad;
其它时,什么奖励也没有。
请从键盘输入岳小鹏的期末成绩,并加以判断
package com.weifengyangyang.contact; import java.util.Scanner; public class IfTest { public static void main(String[] args) { Scanner scan = new Scanner(System.in); System.out.println("请输入岳小鹏的期末成绩(0-100)"); int grade = scan.nextInt(); if(grade == 100){ System.out.println("奖励一辆BMW"); }else if(grade > 80 && grade <= 99){ System.out.println("奖励一台iphone xs max"); }else if(grade >= 60 && grade <= 80){ System.out.println("奖励一个 iPad"); }else{ System.out.println("什么奖励也没有"); } } }
说明:
1.else结构是可选的
2.当多个条件是“互斥”关系时,条件判断语句及执行语句间顺序无所谓,当多个条件是“包含”关系时,“小上大下 / 子上父下”
例2.编写程序:由键盘输入三个整数分别存入变量num1、num2、num3,
对它们进行排序(使用 if-else if-else),并且从小到大输出。
package com.weifengyangyang.contact; import java.util.Scanner; public class IfTest2 { public static void main(String[] args) { // TODO Auto-generated method stub Scanner scan = new Scanner(System.in); System.out.println("请输入第一个整数"); int num1 = scan.nextInt(); System.out.println("请输入第二个整数"); int num2 = scan.nextInt(); System.out.println("请输入第三个整数"); int num3 = scan.nextInt(); int max,middle,min; if(num1 > num2){ if(num3 > num1){ System.out.println(num3+","+num1+","+num2); }else if(num3 < num2){ System.out.println(num1+","+num2+","+num3); }else{ System.out.println(num1+","+num3+","+num2); } }else if(num3 > num2){ System.out.println(num3+","+num2+","+num1); }else if(num3 < num1){ System.out.println(num2+","+num1+","+num3); }else{ System.out.println(num2+","+num3+","+num1); } } }
说明:
1.if-else结构可以嵌套使用
2.如果if-else结构中的执行语句只有一行时,对应的{}可以省略,但是不建议省略
例3.对下列代码,若有输出,指出输出结果。
int x = 4; int y = 1; if (x > 2) { if (y > 2) System.out.println(x + y); System.out.println("atguigu"); } else System.out.println("x is " + x);//输出:atguigu int x = 4; int y = 1; if (x > 2) if (y > 2) System.out.println(x + y); else System.out.println("x is " + x);//输出:4
说明:
else配对按就近原则,与离else最近的if配对
switch(表达式){
case 常量1:
语句1;
// break;
case 常量2:
语句2;
// break;
… …
case 常量N:
语句N;
// break;
default:
语句;
// break;
根据switch表达式中的值,依次匹配各个case中的常量,一旦匹配成功,则进入相应case结构中,调用其执行语句,当调用完执行语句后,则仍然继续向下执行其他case结构中的执行语句,直到遇到break关键字或此switch-case末尾结束为止
break,可以使用在switch-case结构中,表示一旦执行到次关键字,就跳出switch-case结构
switch结构中的表达式,只能是如下的6中数据类型之一:byte、short、char、int、枚举类型(JDK5.0新增)、String类型(JDK7.0新增)
case之后只能声明常量,不能声明范围
break关键字是可选的
default相当于if-else结构中的else。default是可选的,而且位置是灵活的
例4.使用 switch 把小写类型的 char型转为大写。只转换 a, b, c, d, e. 其它的输
出 “other”。
提示:String word = scan.next(); char c = word.charAt(0); switch©{}
package com.weifengyangyang.contact; import java.util.Scanner; public class SwitchTest2 { public static void main(String[] args) { Scanner scan = new Scanner(System.in); System.out.println("请输入小写字母"); String small = scan.next(); char samllchar = small.charAt(0); switch(samllchar){ case 'a': System.out.println('A'); break; case 'b': System.out.println('B'); break; case 'c': System.out.println('C'); break; case 'd': System.out.println('D'); break; case 'e': System.out.println('E'); break; default: System.out.println("other"); } } }
例5.对学生成绩大于60分的,输出“合格”。低于60分的,输出“不合格”。
package com.weifengyangyang.contact; import java.util.Scanner; public class SwitchTest3 { public static void main(String[] args) { // TODO Auto-generated method stub Scanner scan = new Scanner(System.in); System.out.println("请输入成绩(0-100)"); int score = scan.nextInt(); switch(score / 10){ case 0: case 1: case 2: case 3: case 4: case 5: System.out.println("不及格"); break; default: System.out.println("及格"); //更优的方法 switch(score / 60){ case 0 : System.out.println("不及格"); break; case 1 : System.out.println("不及格"); break; } } } }
说明:如果switch-case中的结构中的多个case的执行语句相同,则可以考虑进行合并
关注,即可提高学习效率。Perfect!