基本语法:if(布尔表达式){执行语句;}
表达式要求:可以是任何结果为布尔型的表达式,包括比较运算符、逻辑运算符组合或直接布尔值
执行流程:先计算布尔表达式,结果为true则执行大括号内的语句,否则跳过
代码规范:建议始终使用大括号包裹执行语句,即使只有一条语句,这样代码结构更清晰 简化写法:if(布尔表达式) 执行语句;(不带大括号的单条语句)
注意事项:
这种写法虽然语法正确但不推荐使用
分号标志着语句结束,相当于将单条语句作为整体
缺少大括号可能导致代码可读性下降和潜在逻辑错误
例题:判断整数相等性
方法:使用Scanner获取两个整数输入
通过if(date1 == date2)进行相等性判断
相等时输出提示信息
package if1;
import java.util.Scanner;
public class Demo01 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请分别输入两个数字");
int data1 = sc.nextInt();
int data2 = sc.nextInt();
if(data1 == data2){
System.out.println("两个数同样大");
}else if (data1 > data2){
System.out.println("第一个数大");
} else if (data1 <data2) {
System.out.println("第二个数大");
}
}
}
例题:任意给出一个整数,请用程序实现判断该整数是奇数还是偶数,并在控制台输出该整数是奇数还是偶数
使用Scanner获取两个整数输入
通过==运算符比较两个整数
相等输出"两个整数相等",否则输出"两个整数不相等"
package if1;
import java.util.Scanner;
public class Demo06 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int data = sc.nextInt();
if (data%2==0){
System.out.println("偶数");
}else{
System.out.println("奇数");
}
}
}
例题:年份闰平年判断
能被4整除但不能被100整除:(year%4==0 && year%100!=0)
或能被400整除:||(year%400==0)
-
实现步骤:
- 使用Scanner获取年份输入
- 组合条件判断闰年
- 输出2月份天数
package if1;
import java.util.Scanner;
public class Demo07 {
public static void main(String[] args) {
//1.创建Scanner对象,调用nextInt键盘录入一个年份 year
Scanner scanner = new Scanner(System.in);
int year = scanner.nextInt();
//2.判断(year%4==0 && year%100!=0) || (year%400==0)
if ((year%4==0 && year%100!=0) || (year%400==0)){
//3.如果条件成立,就输出闰年2月29天,否则输出平年2月28天
System.out.println("闰年2月29天");
}else{
System.out.println("平年2月28天");
}
}
}
如果num1 = false num2 = true num1 = num2 ->相当于将num2的true赋值给了num1
if 的第三种格式
嵌套特性:可以包含多个else if分支,最后可用else作为默认情况处理
-
顺序判断:从第一个if开始依次向下判断每个布尔表达式
-
执行规则:当某个条件为true时,执行对应的语句块并结束整个判断结构
-
默认处理:所有条件都为false时,执行else对应的语句块(如果有)
-
注意事项
-
else非必需:最后一种情况不一定使用else,也可以用else if明确判断
-
覆盖原则:必须保证所有可能情况都被判断逻辑覆盖
-
格式:
if(boolean表达式){
执行语句1
}else if(boolean表达式){
执行语句2
}else if(boolean表达式){
执行语句3
}...else{
执行语句n
}
package if1;
import java.util.Scanner;
public class Demo08 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int data1 = sc.nextInt();
int data2 = sc.nextInt();
/* if (data1>data2){
System.out.println("data1大于data2");
}else if(data1<data2){
System.out.println("data1小于data2");
}else{
System.out.println("data1等于data2");
}*/
if (data1>data2){
System.out.println("data1大于data2");
}else if(data1<data2){
System.out.println("data1小于data2");
}else if (data1==data2){
System.out.println("data1等于data2");
}
}
}
练习需求:
键盘录入一个星期数(1,2,...7),输出对应的星期一,星期二,...星期日
输入 1 输出 星期一
输入 2 输出 星期二
输入 3 输出 星期三
输入 4 输出 星期四
输入 5 输出 星期五
输入 6 输出 星期六
输入 7 输出 星期日
输入 其它数字 输出 数字有误
package if1;
import java.util.Scanner;
public class Demo09 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int week = sc.nextInt();
if (week == 1) {
System.out.println("周一");
}else if (week == 2) {
System.out.println("周二");
}else if (week == 3) {
System.out.println("周三");
}else if (week == 4) {
System.out.println("周四");
}else if (week == 5) {
System.out.println("周五");
}else if (week == 6) {
System.out.println("周六");
}else if (week == 7) {
System.out.println("周日");
}else {
System.out.println("请输入正确的数字(1-7)");
}
}
}
练习需求
根据最新的年龄段划分标准:
0-6岁为婴幼儿
7-12岁为少儿
13-17岁为青少年
18-45岁为青年
46-69岁为中年
69岁以上为老年
请键盘录入一个年龄,判断属于什么年龄段
package if1;
import java.util.Scanner;
public class Demo03 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入你的年龄:");
int data = sc.nextInt();
if (data<=6 && data >0){
System.out.println("婴儿");
}else if (data > 6 && data<13){
System.out.println("少儿");
}else if (data >= 13 && data<18){
System.out.println("青少年");
}else if (data >= 18 && data<46){
System.out.println("青年");
}else if (data >= 46 && data<70){
System.out.println("中年");
}else if (data>=70 && data<201) {
System.out.println("老年");
}else {
System.out.println("请输入正确的年龄");
}
}
}
switch和if的区别:
1.switch:会直接跳到相匹配的case
2.if:从上到下挨个判断 -> 实际开发主要用if做判断,灵活