介绍
在开发 Java 应用程序时,验证用户输入是一项至关重要的任务。本实验演示了三种常用的方法来检查给定的输入是否为有效的整数:
- 使用
Integer.parseInt()方法 - 使用
Scanner.hasNextInt()方法 - 使用
Character.isDigit()方法
我们将逐步实现每种方法,并了解它们之间的差异和使用场景。
设置 Java 项目
让我们创建一个新的 Java 文件来实现我们的整数验证方法。
- 打开你的终端,并确保你位于
/home/labex/project目录中:
pwd
- 创建一个名为
CheckInputInteger.java的新 Java 文件:
touch CheckInputInteger.java
- 在你的首选文本编辑器中打开该文件,并添加基本的类结构:
import java.util.Scanner;
public class CheckInputInteger {
public static void main(String[] args) {
// 我们将在这里添加我们的方法调用
}
}

使用 Integer.parseInt() 实现整数验证
Integer.parseInt() 方法尝试将字符串转换为整数。如果转换失败,它会抛出 NumberFormatException。我们可以利用这种行为来验证整数。
- 将以下方法添加到你的
CheckInputInteger.java文件中:
// 将此方法添加到 CheckInputInteger 类中
public static void checkUsingParseInt(String input) {
try {
// 尝试将输入字符串解析为整数
Integer.parseInt(input);
System.out.println(input + " 是一个有效的整数");
} catch (NumberFormatException e) {
// 如果解析失败,则输入不是有效的整数
System.out.println(input + " 不是一个有效的整数");
}
}
- 更新
main方法以测试此实现:
// 修改 main 方法以测试此实现
public static void main(String[] args) {
// 测试用例
checkUsingParseInt("123"); // 有效的整数
checkUsingParseInt("12.34"); // 不是整数
checkUsingParseInt("abc"); // 不是整数
}
- 该文件应如下所示:
import java.util.Scanner;
public class CheckInputInteger {
// 在类中定义方法
public static void checkUsingParseInt(String input) {
try {
// 尝试将输入字符串解析为整数
Integer.parseInt(input);
System.out.println(input + " 是一个有效的整数");
} catch (NumberFormatException e) {
// 如果解析失败,则输入不是有效的整数
System.out.println(input + " 不是一个有效的整数");
}
}
public static void main(String[] args) {
// 测试用例
checkUsingParseInt("123"); // 有效的整数
checkUsingParseInt("12.34"); // 不是整数
checkUsingParseInt("abc"); // 不是整数
}
}
- 编译并运行你的程序:
javac CheckInputInteger.java
java CheckInputInteger
你应该看到以下输出:
123 is a valid integer
12.34 is not a valid integer
abc is not a valid integer

使用 Scanner.hasNextInt() 实现整数验证
Scanner 类提供了 hasNextInt() 方法,用于检查输入中的下一个标记是否可以被解释为整数。当从控制台读取用户输入时,此方法特别有用。
- 将以下方法添加到你的
CheckInputInteger.java文件中,在CheckInputInteger类中:
public static void checkUsingScanner(String input) {
Scanner scanner = new Scanner(input);
if (scanner.hasNextInt()) {
System.out.println(input + " 是一个有效的整数");
} else {
System.out.println(input + " 不是一个有效的整数");
}
scanner.close();
}
- 更新
main方法以包含此实现的测试:
public static void main(String[] args) {
// 之前的测试用例
checkUsingParseInt("123");
checkUsingParseInt("12.34");
checkUsingParseInt("abc");
// 新的测试用例
checkUsingScanner("456"); // 有效的整数
checkUsingScanner("-789"); // 有效的整数
checkUsingScanner("12.34"); // 不是整数
}
- 编译并运行你的程序:
javac CheckInputInteger.java
java CheckInputInteger
你应该看到以下输出:
456 is a valid integer
-789 is a valid integer
12.34 is not a valid integer
这表明 Scanner.hasNextInt() 方法正确地识别了有效和无效的整数。

使用 Character.isDigit() 实现整数验证
Character.isDigit() 方法检查一个字符是否是数字。我们可以通过检查输入字符串中的每个字符来使用它验证整数。
- 将以下方法添加到你的
CheckInputInteger.java文件中:
public static void checkUsingIsDigit(String input) {
boolean isValid = true;
// 通过检查第一个字符来处理负数
int startIndex = (input.charAt(0) == '-') ? 1 : 0;
// 检查每个字符
for (int i = startIndex; i < input.length(); i++) {
if (!Character.isDigit(input.charAt(i))) {
isValid = false;
break;
}
}
if (isValid) {
System.out.println(input + " 是一个有效的整数");
} else {
System.out.println(input + " 不是一个有效的整数");
}
}
- 使用最终的测试用例更新
main方法:
public static void main(String[] args) {
// 之前的测试用例
checkUsingParseInt("123");
checkUsingParseInt("12.34");
checkUsingParseInt("abc");
checkUsingScanner("456");
checkUsingScanner("-789");
checkUsingScanner("12.34");
// 新的测试用例
checkUsingIsDigit("789"); // 有效的整数
checkUsingIsDigit("-123"); // 有效的整数
checkUsingIsDigit("12.34"); // 不是整数
}
- 编译并运行你程序的最终版本:
javac CheckInputInteger.java
java CheckInputInteger
你应该看到以下输出:
789 is a valid integer
-123 is a valid integer
12.34 is not a valid integer

总结
在这个实验中,我们探索了三种不同的方法来验证 Java 中的整数输入:
Integer.parseInt()方法,它很简单,但需要异常处理Scanner.hasNextInt()方法,非常适合读取用户输入Character.isDigit()方法,它提供了逐字符的验证
每种方法都有其优点和用例。parseInt() 方法适用于简单的字符串到整数的转换,Scanner.hasNextInt() 非常适合读取用户输入,而 Character.isDigit() 提供了对验证过程的最大控制。
这些验证技术对于开发能够安全有效地处理用户输入的健壮 Java 应用程序至关重要。



