Проверка, является ли ввод целым числом

JavaJavaBeginner
Практиковаться сейчас

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

При разработке Java-приложений проверка пользовательского ввода является критически важной задачей. Эта лабораторная работа демонстрирует три распространенных метода проверки, является ли заданный ввод допустимым целым числом:

  1. Использование метода Integer.parseInt()
  2. Использование метода Scanner.hasNextInt()
  3. Использование метода Character.isDigit()

Мы реализуем каждый метод шаг за шагом и разберем их различия и варианты использования.

Настройка Java-проекта

Давайте создадим новый Java-файл для реализации наших методов проверки целых чисел.

  1. Откройте терминал и убедитесь, что вы находитесь в каталоге /home/labex/project:
pwd
  1. Создайте новый Java-файл с именем CheckInputInteger.java:
touch CheckInputInteger.java
  1. Откройте файл в предпочитаемом текстовом редакторе и добавьте базовую структуру класса:
import java.util.Scanner;

public class CheckInputInteger {
    public static void main(String[] args) {
        // Здесь мы добавим вызовы наших методов
    }
}
Screenshot of the Java file structure in a text editor

Реализация проверки целых чисел с использованием 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 the program showing valid and invalid integers

Реализация проверки целых чисел с использованием 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-приложений, которые могут безопасно и эффективно обрабатывать пользовательский ввод.