个人简介
⭐️个人主页:微风洋洋♂️
博客领域:编程基础,后端,大数据,信息安全
写作风格:干货,干货,还是tmd的干货
精选专栏:【JavaScript】【HTML+CSS】【Java学习笔记】【Java必刷题】
支持洋哥:点赞、收藏⭐、留言
好久不见,甚是想念!
大家好!
我是洋哥 今天这篇文章就是来和大家详细聊聊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!