知识点解析
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”。
知识总结
- if语句:用于单一条件判断。
- if-else语句:用于二选一条件判断。
- if-else-if语句:用于多条件分支判断。
- 嵌套if语句:用于更复杂的条件判断。
- 注意事项:
- 条件表达式必须用括号括起来。
- 建议始终使用大括号明确代码块范围。
- 注意逻辑运算符的正确使用。
- 浮点数比较要特别注意精度问题。