package javaapplication7;
public class JavaApplication7 {
public static boolean isNumeric(String cadena) {
boolean resultado;
try {
Integer.parseInt(cadena);
resultado = true;
} catch (NumberFormatException excepcion) {
resultado = false;
}
return resultado;
}
public static void main(String[] args) {
String cadena = "500";
int numero;
if (isNumeric(cadena) == true) {
numero = Integer.parseInt(cadena);
System.out.println("Numero: " + numero);
} else {
System.out.println("No es un numero");
}
}
}
Результат
Число
цепь : 500
Номер: 500
Нить
строка : Привет, мир
это не число
Объяснение
Используя возможное исключение, которое генерирует функция Integer.parseInt() , достаточно заключить try/catchпреобразование строки в число в файле .
Когда возникает исключение типа NumberFormatException, мы определяем, что преобразование не удалось, и поэтому строка, которую пытались преобразовать, не является числом, возвращая FALSE. В противном случае он возвращает файл TRUE.
Если вы не используете какую-либо внешнюю библиотеку, обеспечивающую функциональность, лучше всего определить служебный класс с методом, который выполняет проверку, например:
Причина, по которой этого не существует TryParse , в том, что это уже подразумевается.
Если вы посмотрите на прототип, Integer.parseIntвы увидите, что метод выдает исключение при передаче строки без действительного целого числа.
public static int parseInt(String s)
throws NumberFormatException
NumberFormatException — проверенное исключение. В Java есть два типа исключений: проверяемые и непроверяемые, первый тип ВСЕГДА заставляет заключить вызов с блоками try...catchв метод, который его выдает, а второй тип - нет.
Если мы разберем поток на C#
int resultado;
if (Int32.TryParse(cadena, out resultado))
{
// TODO1
}
else
{
// TODO2
}
Как видите TryParse, это неявно, так как parseIntгенерирует исключение, которое автоматически изменяет поток программы.
P.S.
Любая реализация не рекомендуется TryParse, поскольку, в отличие от C#, примитивные типы в Java всегда передаются по значению, а это означает, что предлагаемый метод потребует дважды анализировать строку: один раз для возврата, если строка действительно содержит целое число, а другой — для получения его значения. значение, что абсурдно.
//Ver si un String contiene un numero
public static boolean verificarNumeros(String numOlet){
boolean num=false;
if((numOlet.contains("0")||numOlet.contains("1")||numOlet.contains("2"))||numOlet.contains("3")||numOlet.contains("4")||numOlet.contains("5")||numOlet.contains("6")||numOlet.contains("7")||numOlet.contains("8")||numOlet.contains("9")||numOlet.contains("!")){
System.out.println("tiene numeros");
num=true;
}
return num;
}
Альтернативой проверке того, что строка содержит только цифры в качестве символа, всегда является просмотр строки и проверка ее, чтобы избежать исключения.
public static void main(String[] args) {
String nullType = null;
String integerType = "123434";
String characterType = "adsf4";
System.out.println(isInteger(nullType));
System.out.println(isInteger(integerType));
System.out.println(isInteger(characterType));
}
public static boolean isInteger(String source) {
if (source == null || source.isEmpty())
return false;
int index = 0;
while (index < source.length() &&
Character.isDigit(source.charAt(index))) {
index++;
}
return index == source.length();
}
Редактировать: Это действительно только для положительных чисел, в случае отрицательных вам придется сделать дополнительную покупку для отрицательного символа.
Код
Результат
Число
Нить
Объяснение
Используя возможное исключение, которое генерирует функция Integer.parseInt() , достаточно заключить
try/catch
преобразование строки в число в файле .Когда возникает исключение типа
NumberFormatException
, мы определяем, что преобразование не удалось, и поэтому строка, которую пытались преобразовать, не является числом, возвращаяFALSE
. В противном случае он возвращает файлTRUE
.См. пример
Если вы не используете какую-либо внешнюю библиотеку, обеспечивающую функциональность, лучше всего определить служебный класс с методом, который выполняет проверку, например:
Причина, по которой этого не существует
TryParse
, в том, что это уже подразумевается.Если вы посмотрите на прототип,
Integer.parseInt
вы увидите, что метод выдает исключение при передаче строки без действительного целого числа.NumberFormatException — проверенное исключение. В Java есть два типа исключений: проверяемые и непроверяемые, первый тип ВСЕГДА заставляет заключить вызов с блоками
try...catch
в метод, который его выдает, а второй тип - нет.Если мы разберем поток на C#
Эквивалент в Java :
Как видите
TryParse
, это неявно, так какparseInt
генерирует исключение, которое автоматически изменяет поток программы.P.S.
Любая реализация не рекомендуется
TryParse
, поскольку, в отличие от C#, примитивные типы в Java всегда передаются по значению, а это означает, что предлагаемый метод потребует дважды анализировать строку: один раз для возврата, если строка действительно содержит целое число, а другой — для получения его значения. значение, что абсурдно.Альтернативой проверке того, что строка содержит только цифры в качестве символа, всегда является просмотр строки и проверка ее, чтобы избежать исключения.
Редактировать: Это действительно только для положительных чисел, в случае отрицательных вам придется сделать дополнительную покупку для отрицательного символа.