检查输入是否为整数

JavaBeginner
立即练习

介绍

在开发 Java 应用程序时,验证用户输入是一项至关重要的任务。本实验演示了三种常用的方法来检查给定的输入是否为有效的整数:

  1. 使用 Integer.parseInt() 方法
  2. 使用 Scanner.hasNextInt() 方法
  3. 使用 Character.isDigit() 方法

我们将逐步实现每种方法,并了解它们之间的差异和使用场景。

设置 Java 项目

让我们创建一个新的 Java 文件来实现我们的整数验证方法。

  1. 打开你的终端,并确保你位于 /home/labex/project 目录中:
pwd
  1. 创建一个名为 CheckInputInteger.java 的新 Java 文件:
touch CheckInputInteger.java
  1. 在你的首选文本编辑器中打开该文件,并添加基本的类结构:
import java.util.Scanner;

public class CheckInputInteger {
    public static void main(String[] args) {
        // 我们将在这里添加我们的方法调用
    }
}

Screenshot of the empty CheckInputInteger java file

使用 Integer.parseInt() 实现整数验证

Integer.parseInt() 方法尝试将字符串转换为整数。如果转换失败,它会抛出 NumberFormatException。我们可以利用这种行为来验证整数。

  1. 将以下方法添加到你的 CheckInputInteger.java 文件中:
// 将此方法添加到 CheckInputInteger 类中
public static void checkUsingParseInt(String input) {
    try {
        // 尝试将输入字符串解析为整数
        Integer.parseInt(input);
        System.out.println(input + " 是一个有效的整数");
    } catch (NumberFormatException e) {
        // 如果解析失败,则输入不是有效的整数
        System.out.println(input + " 不是一个有效的整数");
    }
}
  1. 更新 main 方法以测试此实现:
// 修改 main 方法以测试此实现
public static void main(String[] args) {
    // 测试用例
    checkUsingParseInt("123");    // 有效的整数
    checkUsingParseInt("12.34");  // 不是整数
    checkUsingParseInt("abc");    // 不是整数
}
  1. 该文件应如下所示:
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");    // 不是整数
    }
}
  1. 编译并运行你的程序:
javac CheckInputInteger.java
java CheckInputInteger

你应该看到以下输出:

123 is a valid integer
12.34 is not a valid integer
abc is not a valid integer

Output of the Java program showing valid and invalid integer inputs

使用 Scanner.hasNextInt() 实现整数验证

Scanner 类提供了 hasNextInt() 方法,用于检查输入中的下一个标记是否可以被解释为整数。当从控制台读取用户输入时,此方法特别有用。

  1. 将以下方法添加到你的 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();
}
  1. 更新 main 方法以包含此实现的测试:
public static void main(String[] args) {
    // 之前的测试用例
    checkUsingParseInt("123");
    checkUsingParseInt("12.34");
    checkUsingParseInt("abc");

    // 新的测试用例
    checkUsingScanner("456");     // 有效的整数
    checkUsingScanner("-789");    // 有效的整数
    checkUsingScanner("12.34");   // 不是整数
}
  1. 编译并运行你的程序:
javac CheckInputInteger.java
java CheckInputInteger

你应该看到以下输出:

456 is a valid integer
-789 is a valid integer
12.34 is not a valid integer

这表明 Scanner.hasNextInt() 方法正确地识别了有效和无效的整数。

Output of Scanner hasNextInt method validation

使用 Character.isDigit() 实现整数验证

Character.isDigit() 方法检查一个字符是否是数字。我们可以通过检查输入字符串中的每个字符来使用它验证整数。

  1. 将以下方法添加到你的 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 + " 不是一个有效的整数");
    }
}
  1. 使用最终的测试用例更新 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");   // 不是整数
}
  1. 编译并运行你程序的最终版本:
javac CheckInputInteger.java
java CheckInputInteger

你应该看到以下输出:

789 is a valid integer
-123 is a valid integer
12.34 is not a valid integer

Output of the Java program showing integer validation results

总结

在这个实验中,我们探索了三种不同的方法来验证 Java 中的整数输入:

  1. Integer.parseInt() 方法,它很简单,但需要异常处理
  2. Scanner.hasNextInt() 方法,非常适合读取用户输入
  3. Character.isDigit() 方法,它提供了逐字符的验证

每种方法都有其优点和用例。parseInt() 方法适用于简单的字符串到整数的转换,Scanner.hasNextInt() 非常适合读取用户输入,而 Character.isDigit() 提供了对验证过程的最大控制。

这些验证技术对于开发能够安全有效地处理用户输入的健壮 Java 应用程序至关重要。