简介
在这个实验中,你将学习如何在 Java 中判断一个数是偶数还是奇数。我们将探讨使用取模运算符 (%
) 来检查一个数除以 2 时的余数,这是识别偶数的基本原理。
你将实现一个简单的 Java 程序来执行此检查,使用正整数和负整数输入对其进行测试,并考虑如何处理非整数输入,以使你的解决方案更加健壮。
在这个实验中,你将学习如何在 Java 中判断一个数是偶数还是奇数。我们将探讨使用取模运算符 (%
) 来检查一个数除以 2 时的余数,这是识别偶数的基本原理。
你将实现一个简单的 Java 程序来执行此检查,使用正整数和负整数输入对其进行测试,并考虑如何处理非整数输入,以使你的解决方案更加健壮。
在这一步中,你将学习如何在 Java 中使用取模运算符来判断一个数是偶数还是奇数。取模运算符 (%
) 用于返回除法运算的余数。例如,10 % 3
的结果是 1,因为 10 除以 3 商为 3,余数为 1。
偶数是指任何能被 2 整除且没有余数的整数。这意味着,如果你将一个偶数除以 2,余数始终为 0。我们可以使用取模运算符来检查这个条件。
让我们创建一个简单的 Java 程序来检查一个数是否为偶数。
在 WebIDE 编辑器中打开 EvenCheck.java
文件。如果该文件不存在,请在 ~/project
目录下创建它。你可以通过在左侧的文件资源管理器中右键单击,选择“新建文件”,然后输入 EvenCheck.java
来完成此操作。
将以下代码添加到 EvenCheck.java
文件中:
public class EvenCheck {
public static void main(String[] args) {
int number = 10; // 我们将检查这个数是否为偶数
// 使用取模运算符检查除以 2 时的余数
if (number % 2 == 0) {
System.out.println(number + " is an even number.");
} else {
System.out.println(number + " is an odd number.");
}
}
}
让我们来看看新添加的部分:
int number = 10;
:这行代码声明了一个名为 number
的整数变量,并将其赋值为 10。你可以更改这个值来测试不同的数字。if (number % 2 == 0)
:这是一个 if
语句。它会检查括号内的条件是否为真。条件 number % 2 == 0
用于检查 number
除以 2 的余数是否等于 0。System.out.println(number + " is an even number.");
:如果 if
语句中的条件为真(即该数是偶数),则执行这行代码。else
:这个关键字引入了一个代码块,当 if
语句中的条件为假(即该数是奇数)时执行。System.out.println(number + " is an odd number.");
:如果该数是奇数,则执行这行代码。保存 EvenCheck.java
文件(Ctrl+S 或 Cmd+S)。
现在,编译这个程序。打开 WebIDE 底部的终端,并确保你位于 ~/project
目录下。然后,运行以下命令:
javac EvenCheck.java
如果没有错误,将会创建一个 EvenCheck.class
文件。
最后,运行编译后的程序:
java EvenCheck
你应该会看到输出结果,表明数字 10 是偶数还是奇数。
10 is an even number.
现在,尝试将 EvenCheck.java
文件中 number
变量的值更改为其他整数(例如 7、-5、0),并重复步骤 3、4 和 5,看看输出结果会如何变化。
在上一步中,我们成功地检查了一个正整数是偶数还是奇数。现在,让我们来探究取模运算符在处理负数和零的情况时是如何工作的。偶数和奇数的概念适用于所有整数,包括负数和零。
如果一个整数能被 2 整除,即余数为 0,那么它就是偶数。这个定义同样适用于负数。例如,-4 是偶数,因为 -4 除以 2 等于 -2,余数为 0。-3 是奇数,因为 -3 除以 2 等于 -1,余数为 -1(或者根据负数取模的定义为 1,但关键是余数不为 0)。零也被认为是偶数,因为 0 除以 2 等于 0,余数为 0。
让我们修改 EvenCheck.java
程序,用不同的正数、负数以及零进行测试。
在 WebIDE 编辑器中打开 EvenCheck.java
文件。
修改 main
方法以测试几个不同的数字。你可以多次更改 number
变量的值,或者添加更多的 if-else
块来依次检查不同的数字。为了简单起见,让我们针对每个测试用例更改 number
的值并重新运行程序。
首先,让我们用一个正奇数进行测试。将 int number = 10;
这一行改为:
int number = 7; // Test with a positive odd number
保存文件。
在终端中编译修改后的程序:
javac EvenCheck.java
运行程序:
java EvenCheck
你应该会看到如下输出:
7 is an odd number.
现在,让我们用一个负偶数进行测试。将 int number = 7;
这一行改为:
int number = -4; // Test with a negative even number
保存文件。
编译程序:
javac EvenCheck.java
运行程序:
java EvenCheck
你应该会看到如下输出:
-4 is an even number.
接下来,用一个负奇数进行测试。将 int number = -4;
这一行改为:
int number = -3; // Test with a negative odd number
保存文件。
编译程序:
javac EvenCheck.java
运行程序:
java EvenCheck
你应该会看到如下输出:
-3 is an odd number.
最后,用零进行测试。将 int number = -3;
这一行改为:
int number = 0; // Test with zero
保存文件。
编译程序:
javac EvenCheck.java
运行程序:
java EvenCheck
你应该会看到如下输出:
0 is an even number.
如你所见,取模运算符能够正确识别正数、负数和零中的偶数和奇数。逻辑 number % 2 == 0
是一种可靠的方法,可用于检查任何整数是否为偶数。
在前面的步骤中,我们已经成功地使用取模运算符来检查整数是偶数还是奇数。然而,如果用户尝试输入非整数,比如小数或文本,会发生什么呢?我们当前的程序是为处理整数 (int
) 而设计的,提供非整数输入会导致错误。
在这一步中,我们将修改程序,使其能够从用户那里获取输入,并处理输入不是有效整数的情况。我们将使用 Scanner
类来读取用户输入,这个类我们在“Your First Java Lab”中曾简单介绍过。
在 WebIDE 编辑器中打开 EvenCheck.java
文件。
将文件的全部内容替换为以下代码:
import java.util.Scanner;
import java.util.InputMismatchException;
public class EvenCheck {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("Enter an integer: ");
try {
int number = scanner.nextInt(); // Read integer input from the user
// Use the modulo operator to check for a remainder when divided by 2
if (number % 2 == 0) {
System.out.println(number + " is an even number.");
} else {
System.out.println(number + " is an odd number.");
}
} catch (InputMismatchException e) {
System.out.println("Invalid input. Please enter an integer.");
} finally {
scanner.close(); // Close the scanner
}
}
}
让我们看看这些改动:
import java.util.Scanner;
:导入 Scanner
类以读取输入。import java.util.InputMismatchException;
:导入当输入与预期类型不匹配时抛出的异常类。Scanner scanner = new Scanner(System.in);
:创建一个 Scanner
对象,用于从控制台读取输入。System.out.print("Enter an integer: ");
:提示用户输入一个数字。try { ... } catch (InputMismatchException e) { ... }
:这是一个 try-catch
块,用于错误处理。try
块内的代码会被执行。如果发生 InputMismatchException
(即输入不是整数),则执行 catch
块内的代码。int number = scanner.nextInt();
:这行代码尝试从用户输入中读取一个整数。如果用户输入的内容无法被解释为整数,则会抛出 InputMismatchException
。System.out.println("Invalid input. Please enter an integer.");
:如果捕获到 InputMismatchException
,则会打印此消息。finally { scanner.close(); }
:finally
块内的代码无论是否发生异常都会被执行。这里用于关闭 Scanner
资源。保存文件。
在终端中编译修改后的程序:
javac EvenCheck.java
运行程序:
java EvenCheck
当出现提示时,输入一个整数(例如 15
)并按回车键。程序应该能正确判断它是偶数还是奇数。
Enter an integer: 15
15 is an odd number.
再次运行程序:
java EvenCheck
这次,当出现提示时,输入一个非整数值(例如 hello
或 3.14
)并按回车键。现在程序应该能够妥善处理无效输入。
Enter an integer: hello
Invalid input. Please enter an integer.
通过添加 try-catch
块,我们的程序现在更加健壮,能够处理用户提供的不符合预期格式的输入。这是编写用户友好程序的一个重要方面。
在这个实验中,我们学习了如何在 Java 中使用取模运算符 (%
) 来检查一个数字是否为偶数。我们发现,一个偶数除以 2 的余数为 0。我们使用 if-else
语句实现了一个简单的 Java 程序,用于执行此检查并输出给定整数是偶数还是奇数。
我们进一步探索了使用正整数和负整数输入来测试偶数检查,以确保取模运算符在不同符号的情况下都能按预期工作。最后,我们考虑了如何处理非整数输入,了解到取模运算符通常用于整数类型,并讨论了在更健壮的应用程序中验证输入类型或处理异常的潜在方法。