При разработке Java-приложений проверка пользовательского ввода является критически важной задачей. Эта лабораторная работа демонстрирует три распространенных метода проверки, является ли заданный ввод допустимым целым числом:
Использование метода Integer.parseInt()
Использование метода Scanner.hasNextInt()
Использование метода Character.isDigit()
Мы реализуем каждый метод шаг за шагом и разберем их различия и варианты использования.
Никаких установок — код прямо здесь.
Настройка Java-проекта
Давайте создадим новый Java-файл для реализации наших методов проверки целых чисел.
Откройте терминал и убедитесь, что вы находитесь в каталоге /home/labex/project:
pwd
Создайте новый Java-файл с именем CheckInputInteger.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"); // Не целое число
}
}
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"); // Не целое число
}
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"); // Не целое число
}
Скомпилируйте и запустите окончательную версию вашей программы:
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-приложений, которые могут безопасно и эффективно обрабатывать пользовательский ввод.