「Java流程控制」if结构

108 阅读7分钟

知识点解析

Java中的if结构,包括基本if语句、if-else语句以及if-else-if多分支语句,主要功能是能够根据条件判断执行不同的代码块。

1.if语句
用于在条件为true时执行一段代码,语法如下:

if (条件表达式) {
    // 条件为true时执行的代码
}

2.if-else语句
用于在条件为true时执行一段代码,在条件为false时执行另一段代码,语法如下:

if (条件表达式) {
    // 条件为true时执行的代码
} else {
    // 条件为false时执行的代码
}

3.if-else-if多分支语句
用于处理多个条件分支,语法如下:

if (条件表达式1) {
    // 条件1为true时执行的代码
} else if (条件表达式2) {
    // 条件1为false,条件2为true时执行的代码
} else {
    // 其他情况执行的代码
}

案例解析

案例:基本if语句

public class IfExample {
    public static void main(String[] args) {
        int number = 10;
        if (number > 5) {
            System.out.println("数字大于5");
        }
    }
}

运行结果
数字大于5
代码解析

  • Java源文件保存为“IfExample.java”。
  • 定义变量number并赋值为10。
  • 使用if语句判断number是否大于5,条件为true,输出结果。

案例:if-else语句

public class IfElseExample {
    public static void main(String[] args) {
        int age = 18;
        if (age >= 18) {
            System.out.println("成年人");
        } else {
            System.out.println("未成年人");
        }
    }
}

运行结果
成年人
代码解析

  • Java源文件保存为“IfElseExample.java”。
  • 定义变量age并赋值为18。
  • 使用if-else语句判断age是否大于等于18,条件为true,输出“成年人”。

案例:if-else-if多分支语句

public class IfElseIfExample {
    public static void main(String[] args) {
        int score = 85;
        if (score >= 90) {
            System.out.println("优秀");
        } else if (score >= 80) {
            System.out.println("良好");
        } else if (score >= 60) {
            System.out.println("及格");
        } else {
            System.out.println("不及格");
        }
    }
}

运行结果
良好
代码解析

  • Java源文件保存为“IfElseIfExample.java”。
  • 定义变量score并赋值为85。
  • 使用if-else-if语句逐级判断score的范围,输出“良好”。

案例:嵌套if语句

public class NestedIfExample {
    public static void main(String[] args) {
        int number = 15;
        if (number > 10) {
            System.out.println("数字大于10");
            if (number % 2 == 0) {
                System.out.println("且是偶数");
            } else {
                System.out.println("且是奇数");
            }
        }
    }
}

运行结果
数字大于10
且是奇数
代码解析

  • Java源文件保存为“NestedIfExample.java”。
  • 定义变量number并赋值为15。
  • 外层if判断数字是否大于10,条件为true
  • 内层if判断数字是否为偶数,条件为false,输出"且是奇数"。

常见错误及解决方法

错误:条件表达式缺少括号

if (number > 5  // 缺少右括号
   System.out.println("错误");

解决方法:确保条件表达式用括号括起来。

错误:if语句后缺少大括号

if (number > 5)
   System.out.println("正确");  // 仅单行代码可省略大括号,但建议始终使用
   System.out.println("错误");  // 这行代码会无条件执行

解决方法:始终使用大括号明确代码块范围。

错误:逻辑运算符使用错误

if (age = 18) {  // 使用了赋值运算符=而非比较运算符==
   System.out.println("错误");
}

解决方法:使用==进行相等比较。

错误:浮点数比较错误

double value = 0.1 + 0.2;
if (value == 0.3) {  // 由于浮点数精度问题,条件为false
   System.out.println("相等");
}

解决方法:使用误差范围比较浮点数:

if (Math.abs(value - 0.3) < 0.00001) {
   System.out.println("近似相等");
}

实操练习

题目:编写代码判断一个整数是否为正数。
答案

public class Test {
    public static void main(String[] args) {
        int num = 5;
        if (num > 0) {
            System.out.println("正数");
        }
    }
}

运行结果
正数
说明:Java源文件保存为“Test.java”。

题目:编写代码判断一个整数是奇数还是偶数。
答案

public class Test {
    public static void main(String[] args) {
        int num = 4;
        if (num % 2 == 0) {
            System.out.println("偶数");
        } else {
            System.out.println("奇数");
        }
    }
}

运行结果
偶数
说明:Java源文件保存为“Test.java”。

题目:编写代码判断一个整数是否在1到100之间(包含1和100)。
答案

public class Test {
    public static void main(String[] args) {
        int num = 50;
        if (num >= 1 && num <= 100) {
            System.out.println("数字在1到100之间");
        }
    }
}

运行结果
数字在1到100之间
说明:Java源文件保存为“Test.java”。

题目:编写代码判断一个字符是数字、大写字母、小写字母还是其他字符。
答案

public class Test {
    public static void main(String[] args) {
        char ch = 'A';
        if (Character.isDigit(ch)) {
            System.out.println("数字");
        } else if (Character.isUpperCase(ch)) {
            System.out.println("大写字母");
        } else if (Character.isLowerCase(ch)) {
            System.out.println("小写字母");
        } else {
            System.out.println("其他字符");
        }
    }
}

运行结果
大写字母
说明:Java源文件保存为“Test.java”。

题目:编写代码根据三边长度判断三角形是等边、等腰还是普通三角形。
答案

public class Test {
    public static void main(String[] args) {
        int a = 3, b = 3, c = 3;
        if (a + b > c && a + c > b && b + c > a) {
            if (a == b && b == c) {
                System.out.println("等边三角形");
            } else if (a == b || a == c || b == c) {
                System.out.println("等腰三角形");
            } else {
                System.out.println("普通三角形");
            }
        } else {
            System.out.println("不能构成三角形");
        }
    }
}

运行结果
等边三角形
说明:Java源文件保存为“Test.java”。

题目:编写代码根据用户输入的成绩输出等级(A、B、C、D、E)。
答案

import java.util.Scanner;

public class GradeExample {
   public static void main(String[] args) {
       Scanner scanner = new Scanner(System.in);
       System.out.print("请输入成绩:");
       int score = scanner.nextInt();

       if (score >= 90) {
           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 {
           System.out.println("E");
       }
   }
}

运行结果
请输入成绩:78
C
说明:Java源文件保存为“GradeExample.java”。

题目:编写代码判断一个年份是否为闰年(能被4整除但不能被100整除,或能被400整除)。
答案

import java.util.Scanner;

public class LeapYearExample {
   public static void main(String[] args) {
       Scanner scanner = new Scanner(System.in);
       System.out.print("请输入年份:");
       int year = scanner.nextInt();

       if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) {
           System.out.println("闰年");
       } else {
           System.out.println("平年");
       }
   }
}

运行结果
请输入年份:2024
闰年
说明:Java源文件保存为“LeapYearExample.java”。

题目:编写代码根据购买金额计算折扣后的价格。

  • 金额小于100元,无折扣
  • 100-500元(含),9折
  • 500-1000元(含),8折
  • 超过1000元,7折

答案

import java.util.Scanner;

public class DiscountCalculator {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.print("请输入购买金额:");
        double amount = scanner.nextDouble();
        double discountedAmount;

        if (amount < 100) {
            discountedAmount = amount;
        } else if (amount <= 500) {
            discountedAmount = amount * 0.9;
        } else if (amount <= 1000) {
            discountedAmount = amount * 0.8;
        } else {
            discountedAmount = amount * 0.7;
        }

        System.out.printf("折扣后价格:%.2f元%n", discountedAmount);
    }
}

运行结果
请输入购买金额:200
折扣后价格:180.00元
说明:Java源文件保存为“DiscountCalculator.java”。

题目:编写代码根据身高和体重计算BMI指数并给出健康建议。

  • BMI < 18.5:偏瘦
  • 18.5 ≤ BMI < 24:正常
  • 24 ≤ BMI < 28:超重
  • BMI ≥ 28:肥胖

答案

import java.util.Scanner;

public class BMICalculator {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.print("请输入身高(米):");
        double height = scanner.nextDouble();
        System.out.print("请输入体重(千克):");
        double weight = scanner.nextDouble();
        
        double bmi = weight / (height * height);
        System.out.printf("您的BMI指数为:%.2f%n", bmi);
        
        if (bmi < 18.5) {
            System.out.println("偏瘦,建议适当增加营养");
        } else if (bmi < 24) {
            System.out.println("正常,请保持");
        } else if (bmi < 28) {
            System.out.println("超重,建议适当控制饮食并加强锻炼");
        } else {
            System.out.println("肥胖,建议咨询医生制定减肥计划");
        }
    }
}

运行结果
请输入身高(米):1.7
请输入体重(千克):52
您的BMI指数为:17.99
偏瘦,建议适当增加营养
说明:Java源文件保存为“BMICalculator.java”。

题目:编写代码检测密码强度。

  • 弱:只包含数字或字母,长度小于8
  • 中:包含数字和字母,长度≥8
  • 强:包含数字、字母和特殊字符,长度≥8

答案

import java.util.Scanner;

public class PasswordStrengthChecker {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.print("请输入密码:");
        String password = scanner.nextLine();
        
        boolean hasDigit = false;
        boolean hasLetter = false;
        boolean hasSpecialChar = false;
        
        for (char c : password.toCharArray()) {
            if (Character.isDigit(c)) {
                hasDigit = true;
            } else if (Character.isLetter(c)) {
                hasLetter = true;
            } else {
                hasSpecialChar = true;
            }
        }
        
        if (password.length() < 8 || (!hasDigit && !hasLetter)) {
            System.out.println("密码强度:弱");
        } else if (hasDigit && hasLetter && !hasSpecialChar) {
            System.out.println("密码强度:中");
        } else if (hasDigit && hasLetter && hasSpecialChar && password.length() >= 8) {
            System.out.println("密码强度:强");
        } else {
            System.out.println("密码强度:弱");
        }
    }
}

运行结果
请输入密码:www.163.com
密码强度:强
说明:Java源文件保存为“PasswordStrengthChecker.java”。

知识总结

  1. if语句:用于单一条件判断。
  2. if-else语句:用于二选一条件判断。
  3. if-else-if语句:用于多条件分支判断。
  4. 嵌套if语句:用于更复杂的条件判断。
  5. 注意事项
    • 条件表达式必须用括号括起来。
    • 建议始终使用大括号明确代码块范围。
    • 注意逻辑运算符的正确使用。
    • 浮点数比较要特别注意精度问题。