if(条件表达式) {
语句块;
}
判断条件表达式是否成立
/*
编程使用if分支结构模拟网吧上网的过程
*/
import java.util.Scanner;
public class IfTest {
public static void main(String[] args) {
// 1、提示用户输入年龄信息并使用变量记录
System.out.println("请输入您的年龄:");
Scanner sc = new Scanner(System.in);
int age = sc.nextInt();
// 2、使用if分支结构判断是否成年并给出对应的提示
if(age >= 18) {
System.out.println("开心的浏览起了网页......");
}
// 3、打印一句话
System.out.println("美好的时光总是短暂的!");
}
}
提示用户输入两个整数,使用if分支结构找到最大值并打印出来。
方式一:使用两个if分支结构可以找到最大值
/*
编程使用if分支结构查找两个整数中的最大值
*/
import java.util.Scanner;
public class IfMaxTest {
public static void main(String[] args) {
// 1、提示用户输入两个整数并使用变量记录
System.out.println("请输入两个整数:");
Scanner sc = new Scanner(System.in);
int ia = sc.nextInt();
int ib = sc.nextInt();
// 2、使用if分支结构找到最大值并打印
// 方式一:使用两个if分支结构可以找到最大值
if(ia >= ib) {
System.out.println("最大值是:" + ia);
}
if(ia < ib) {
System.out.println("最大值是:" + ib);
}
}
}
方式二:假设第一个数为最大值并记录 推荐方式 具有通用性
// 方式二:假设第一个数为最大值并记录 推荐方式 具有通用性
int max = ia;
if(ib = max) {
max = ib;
}
System.out.println("最大值是:" + max);
只会记录两种情况的时候使用 if else 分支结构,要么通过,要么不通过
if (条件表达式) {
语句块1;
} else {
语句块2;
}
判断条件表达式是否成立
/*
编程使用ifelse分支结构来模拟考试成绩查询的过程
*/
import java.util.Scanner;
public class IfElseTest {
public static void main(String[] args) {
// 1、提示用户输入考试成绩并使用变量记录
System.out.println("请输入您的考试成绩:");
Scanner sc = new Scanner(System.in);
int score = sc.nextInt(); // 本质上就是在内存中申请了一块内存单元
// 2、使用if-else分支结构判断考试成绩是否及格并给出相应的提示
if(score >= 60) {
System.out.println("恭喜您考试通过了!");
} else {
System.out.println("下学期来补考把!");
}
// 3、打印一句话
System.out.println("世界上最遥远的距离不是生与死而是你在if我在else,似乎一直相伴却又永远分离!");
}
}
if 分支结构特点:满足就干,不满足就跳过
if - else 分支结构特点:满足就做这个,不满足就做那个
提示用户输入一个整数,使用 if - else 分支结构判断该整数是负数还是非负数并打印。
/*
编程使用if-else分支结构判断是否为负数和非负数
*/
import java.util.Scanner;
public class IfElseJudgeTest {
public static void main(String[] args) {
// 1、提示用户输入一个整数并使用变量记录
System.out.println("请输入一个整数:");
Scanner sc = new Scanner(System.in);
int num = sc.nextInt();
// 2、使用if-else分支结构判断负数和非负数并打印
if(num >= 0) {
System.out.println(num + "是非负数");
} else {
System.out.println(num + "是负数");
}
}
}
使用 if - else 分支结构判断该整数是正数、负数还是零。------------> if - else 分支结构的嵌套使用
System.out.println("-------------------------------");
// 2、使用if-else分支结构判断负数和正数、零并打印
if(num >= 0) {
// 针对目前的非负数再次判断是正数还是零
if (num > 0) {
System.out.println(num + "是正数");
} else {
System.out.println(num + "是零");
}
} else {
System.out.println(num + "是负数");
}
有三种或者三种以上的选择,但是语句块也是有且只有一个执行
if(条件表达式1) {
语句块1;
} else if(条件表达式2) {
语句块2;
} else {
语句块n;
}
执行流程:判断条件表达式1是否成立
/*
编程使用 if-else if-else 分支结构来模拟购买火车票的过程
*/
import java.util.Scanner;
public class IfElseIfElseTest {
public static void main(String[] args) {
// 1、提示用户输入身份信息并使用变量记录
System.out.println("请输入您的身份信息:");
Scanner sc = new Scanner(System.in);
String str = sc.next(); // 本质上就是在内存中申请了一块存储单元
// 2、使用if-else if-else分支结构判断身份信息并给出相应的提示
// 判断"军人"是否等于str,是否与str的数值相等
if("军人".equals(str)) { // 判断字符串数值是否相等使用.equals()方法
System.out.println("请免费乘车!");
} else if("学生".equals(str)) {
System.out.println("请购买半价票!");
} else {
System.out.println("请购买全价票!");
}
// 3、打印一句话
System.out.println("坐上了火车去拉萨,去看那美丽的布达拉!");
}
}
应纳税所得额:薪水 - 个税起征点
方式一:按照薪水所在范围,按照薪水所在范围进行梯度纳税和梯度计算,再将个人所得税计算出来,薪水越高,梯度越多,比较啰嗦
/*
编程使用if-else if-else分支结构计算个人所得税
*/
import java.util.Scanner;
public class IfSalaryTest {
public static void main(String[] args) {
// 1、提示用户输入个人的薪水并使用变量记录
System.out.println("请输入您的薪水:");
Scanner sc = new Scanner(System.in);
// 局部变量:作用范围从声明开始一直到方法体结束
int salary = sc.nextInt();
// 2、使用if-else if-else分支结构判断薪水所在区间并计算对应的个人所得税
// 方式一:按照薪水所在范围,按照薪水所在范围进行梯度纳税和梯度计算,再将个人所得税计算出来,薪水越高,梯度越多
double salaryPrice = 0.0; // 个人所得税
if(salary <= 5000) {
System.out.println("无需纳税!");
} else if(salary <= 8000) {
// 块变量:作用范围从声明开始一直到当前语句块结束
// double salaryPrice = (salary - 5000) * 0.03;
salaryPrice = (salary - 5000) * 0.03;
} else if(salary <= 17000) {
salaryPrice = (salary - 8000) * 0.1 + (8000 - 5000) * 0.03;
} else if(salary <= 30000) {
salaryPrice = (salary - 17000) * 0.2 + (17000 - 8000) * 0.1 + (8000 - 5000) * 0.03;
}
// ... 剩下的就不写了,依次内推
// 3、打印最终的计算结果
System.out.println("最终的个人所得税是:" + salaryPrice);
}
}
方式二:使用个人所得税公式:本月应纳税所得额 * 对应税率 - 速算扣除数
// 方式二:使用公式
// 个人所得税计算公式:本月应纳税所得额 * 对应税率 - 速算扣除数
if(salary <= 5000) {
System.out.println("无需纳税!");
} else if(salary <= 8000) {
// 块变量:作用范围从声明开始一直到当前语句块结束
// double salaryPrice = (salary - 5000) * 0.03;
salaryPrice = (salary - 5000) * 0.03 - 0;
} else if(salary <= 17000) {
salaryPrice = (salary - 5000) * 0.1 -210;
} else if(salary <= 30000) {
salaryPrice = (salary - 5000) * 0.2 - 1410;
}
// ... 剩下的就不写了,依次内推
出租车计费方式:由里程钱数和等候时间钱数相加得出。
里程数前3公里13元,超过3公里到15公里部分每公里2元,15公里以上部分每公里3元。
等候时间没2分半1元,不足部分不要钱。
输入公里数和等候秒数,输出车费。
16公里,等候290秒,车费 = 13 + (15 - 3)*2 + (16 - 15) * 3 + 1 = 41
/*
编程使用 if-else if-else 分支结构实现出租车计费系统的实现
*/
import java.util.Scanner;
public class IfTaxiTest {
public static void main(String[] args) {
// 1、提示用户输入公里数和等候秒数并使用变量记录
System.out.println("请输入公里数和等候的秒数:");
Scanner sc = new Scanner(System.in);
int km = sc.nextInt(); // 公里数
int sec = sc.nextInt(); // 秒数
// 2、根据公里数和计算对应的里程费并使用变量记录
int kmPrice = 0; // 里程费
if(km <= 3) {
kmPrice = 13;
} else if(km <= 15) {
kmPrice = (km - 3) * 2 + 13;
} else if(km > 15) {
kmPrice = (km - 15) * 3 + (15 - 3) * 2 + 13;
}
// 3、根据等待的秒数来计算对应的等待费并使用变量记录
int secPrice = sec / 150; // 等待费
// 4、计算总费用并打印
int sumPrice = kmPrice + secPrice; // 总费用
System.out.println("本次出租车的总费用是:" + sumPrice);
}
}
/*
编程使用 if-else if-else 分支结构判断考试成绩所在的等级
*/
import java.util.Scanner;
public class IfScoreTest {
public static void main(String[] args) {
// 1、提示用户输入考试成绩并使用变量记录
System.out.println("请输入考试成绩:");
Scanner sc = new Scanner(System.in);
int score = sc.nextInt(); // 考试的成绩
// 2、使用 if-else if-else 分支结构判断考试成绩所在的等级
if(score > 100) {
System.out.println("非法值");
} else 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 if(score >= 0) {
System.out.println("等级E");
} else {
System.out.println("非法值");
}
}
}
switch(变量/表达式) {
case 字面值1:语句块1;break;
case 字面值2:语句块2;break;
...
default:语句块n;
}
拿着变量或者表达式的结果来跟case后面的字面值进行匹配。在Java中直接写出来的整数数据可以叫:直接量、字面值、常量。字面值就是直接写出来的数据内容。break可以跳出switch-case分支结构外,如果所有字面值都没有匹配,就执行default(默认)。相当于if-else if-else多分支结构的变形。default后面可以有break也可以没有,因为break是用来跳出分支结构的,而default是最后的代码,执行完不管有无break都会跳出分支结构继续往下走。如果把default放在最上边就不可以省略了。
执行流程:计算变量/表达式的数值=>判断是否匹配字面值1
switch()中支持的数据类型有:byte、short、char以及int类型,从jdk1.5开始支持枚举类型,从jdk1.7开始支持String类型。
不是必须有default,有些弱类型语言是不用写的,但是为了程序更完整、更安全,建议写上default
如果default语句在所有case最后,此时可以不加break 如果default语句之后还有case语句 如果不加break,则default语句执行过之后会继续下面的case语句,此时必须要在default之后加break语句,不过这种default用法是不推荐的
当所有分支都没有匹配成功,当有default的语句的话,就执行default分支中的代码块
case穿透就是:当在switch语句中,执行case分支语句,如果满足case1,但是在case1的语句块中,没有加break;,即使case1,满足条件,程序仍然会向下执行case2,即使case2不满足条件,除非case2语句块中有break;,程序会跳出switch选择结构,否则继续执行case3,一直这样执行下去,直到整个switch语句全部执行完毕或者遇到break,才能结束!
/*
编程使用 switch-case 分支结构实现考试成绩等级的判断
*/
import java.util.Scanner;
public class SwitchScoreTest {
public static void main(String[] args) {
// 1、提示用户输入考试成绩并使用变量记录 0 ~ 100
System.out.println("请输入考试成绩:");
Scanner sc = new Scanner(System.in);
int score = sc.nextInt(); // 考试的成绩
// 2、使用 switch case 分支结构实现考试成绩的等级判断
switch(score / 10){
// 90 / 10 = 9 91 /10 =9 99 / 10 = 9 100/10 = 10
case 10:
// System.out.println("等级A");
// break; 在switch 中匹配了这个case由于没有break,代码就会一行一行的往下执行,不管有没有匹配,语句块都会执行,直到遇到break才会跳出来。
case 9:
System.out.println("等级A"); // case 穿透
break;
case 8:
System.out.println("等级B");
break;
case 7:
System.out.println("等级C");
break;
case 6:
System.out.println("等级D");
break;
default:
System.out.println("等级E");
}
// 3、打印一句话
System.out.println("世界上最痴情的等待就是我当case你当switch,或许永远都不会选到自己!");
}
}
/*
编程使用 switch-case 分支结构来模拟菜单效果
*/
import java.util.Scanner;
public class SwitchMenuTest {
public static void main(String[] args) {
// 1、绘制字符界面
System.out.println(" 欢迎来到系统界面");
System.out.println("-------------------------------------------------------");
System.out.print(" [1]学员系统 "); // println表示打印并换行,print表示打印不换行
System.out.println("[2]管理员系统");
System.out.println(" [0]退出系统");
System.out.println("-------------------------------------------------------");
System.out.println("请选择要进入的系统:");
Scanner sc = new Scanner(System.in);
int choose = sc.nextInt();
// 2、使用switch-case 分支结构来模拟用户的选择并给出提示
switch(choose) {
case 1:
System.out.println("正在进入学员系统...");
break;
case 2:
System.out.println("正在进入管理员系统...");
break;
case 0:
System.out.println("谢谢使用,下次再见!");
break;
default:
System.out.println("输入错误,请重新选择!");
}
}
}
核心理念:以后只要遇到两种或者两种以上的选择时,我们有两种手法:1、if - else if -else 分支结构 2、switch-case 分支结构