В программировании на Java «java.lang.NumberFormatException» — это распространенное исключение, которое возникает, когда вы пытаетесь преобразовать строку в числовой тип, но строка не представляет допустимое число. Эта ошибка может быть весьма неприятной, но не бойтесь! В этой статье блога мы рассмотрим несколько методов обработки этого исключения и попутно предоставим вам практические примеры кода. Итак, приступим!
Метод 1: использование блока Try-Catch
Один из самых простых способов обработки NumberFormatException— использование блока try-catch. Вы можете попытаться проанализировать строку как число внутри блока try, и если возникнет исключение, вы сможете его перехватить и выполнить необходимую обработку ошибок. Вот пример:
String input = "0.01";
try {
double number = Double.parseDouble(input);
// Use the number in your code
} catch (NumberFormatException e) {
// Handle the exception
System.out.println("Invalid number format: " + input);
}
Метод 2: использование регулярных выражений
Регулярные выражения могут быть полезны для проверки входных строк перед их анализом как чисел. Вы можете создать шаблон, соответствующий допустимым числовым форматам, и проверить, соответствует ли входная строка этому шаблону. Вот пример:
String input = "0.01";
if (input.matches("-?\\d+(\\.\\d+)?")) {
double number = Double.parseDouble(input);
// Use the number in your code
} else {
System.out.println("Invalid number format: " + input);
}
Метод 3: использование пользовательского метода проверки
Если вам приходится выполнять синтаксический анализ чисел в нескольких местах вашего кода, вы можете рассмотреть возможность создания многократно используемого метода проверки. Этот метод может принимать строку в качестве входных данных и возвращать логическое значение, указывающее, является ли строка допустимым числом. Вот пример:
public static boolean isValidNumber(String input) {
try {
Double.parseDouble(input);
return true;
} catch (NumberFormatException e) {
return false;
}
}
// Usage:
String input = "0.01";
if (isValidNumber(input)) {
double number = Double.parseDouble(input);
// Use the number in your code
} else {
System.out.println("Invalid number format: " + input);
}
Метод 4: использование Apache Commons Lang
Apache Commons Lang — это популярная библиотека Java, предоставляющая различные служебные классы. Один из этих классов, NumberUtils, предлагает удобные методы для обработки числовых операций, включая анализ строк как чисел. Вот пример:
import org.apache.commons.lang3.math.NumberUtils;
String input = "0.01";
if (NumberUtils.isCreatable(input)) {
double number = NumberUtils.toDouble(input);
// Use the number in your code
} else {
System.out.println("Invalid number format: " + input);
}
Метод 5: использование потоков Java 8
Если вы используете Java 8 или более поздние версии, вы можете использовать возможности потоков для обработки NumberFormatExceptions. Используя операцию filter, вы можете отфильтровывать недопустимые номера и обрабатывать только действительные. Вот пример:
import java.util.Arrays;
String input = "0.01";
Arrays.stream(input.split(","))
.filter(s -> s.matches("-?\\d+(\\.\\d+)?"))
.mapToDouble(Double::parseDouble)
.forEach(number -> {
// Use the number in your code
});
В этой статье мы рассмотрели пять различных методов обработки исключения «java.lang.NumberFormatException» в Java. Эти методы включают использование блоков try-catch, регулярных выражений, пользовательских методов проверки, потоков Apache Commons Lang и Java 8. Используя эти методы, вы можете корректно обрабатывать недопустимые числовые форматы и гарантировать бесперебойную работу вашего кода. Не забудьте выбрать метод, который лучше всего подходит для вашего случая использования. Приятного кодирования!