2010-12-08 2 views
2

Скажите, что у вас есть строка, которую вы хотите протестировать, чтобы убедиться, что она содержит целое число, прежде чем переходить к остальной части кода. Что бы вы использовали в java, чтобы узнать, является ли это целым числом?Как найти, содержит ли строка и целое число или нет?

+2

Ваш вопрос не ясен. Вы хотите проверить, содержит ли он целое число или с ним целое число? abc123 или 123456? – 2010-12-08 14:30:23

+0

@Ash **, чтобы узнать, является ли оно целым числом ** - для меня вопрос ясен (название неоднозначно). – 2010-12-08 14:58:58

+0

Вы также можете посмотреть это http://stackoverflow.com/questions/3517686/cannot-convert-string-to-integer-in-java – CoolBeans 2010-12-08 15:29:03

ответ

13

Если вы хотите, чтобы убедиться, что это только целое число и преобразовать его в один, я хотел бы использовать parseInt в try/catch. Тем не менее, если вы хотите, чтобы проверить, если строка содержит число, то вы бы лучше использовать String.matches с Regular Expressions: stringVariable.matches("\\d")

+2

stringVariable.matches ("\\ d +") Я думаю .. – Thomas 2010-12-08 14:54:22

0
  1. Пользователь регулярное выражение:

    Pattern.compile("^\\s*\\d+\\s*$").matcher(myString).find();

  2. Просто оберните Integer.parse() по TRY/улова (NumberFormatException)

+0

Будет ли регулярное выражение распознавать `1` как цифру? – 2010-12-08 15:02:58

+0

Прошу прощения, я не знаю этого персонажа. Что это? – AlexR 2010-12-08 15:06:08

+0

Это ARABIC-INDIC DIGIT ONE.Попробуйте сами: `System.out.println (Integer.valueOf (" 1 "));` – 2010-12-08 17:45:29

3

Вы можете проверить, правда: "yourStringHere".matches("\\d+")

+1

почему downvote? Пожалуйста, объясните? – dimitrisli 2015-04-08 09:49:17

4
String s = "abc123"; 
for(char c : s.toCharArray()) { 
    if(Character.isDigit(c)) { 
     return true; 
    } 
} 
return false; 
+2

Обычно это не работает, строка не является типом итерации. – cytinus 2012-12-12 15:27:36

-1

Если вы просто хотите проверить, если строка содержит только целое значение, написать способ, как это:

public boolean isInteger(String s) { 
    boolean result = false; 
    try { 
    Integer.parseInt("-1234"); 
    result = true; 
    } catch (NumberFormatException nfe) { 
    // no need to handle the exception 
    } 
    return result; 
} 

parseInt возвратит значение int (-1234 в данном примере), или выбросить исключение.

-1
int number = 0; 
try { 
    number = Integer.parseInt(string); 
} 
catch(NumberFormatException e) {} 
1

Я использую метод матчей() из класса Струнный:

Scanner input = new Scanner(System.in) 
    String lectura; 
    int number; 
    lectura = input.next(); 
    if(lectura.matches("[0-3]")){ 
     number = lectura; 
    } 

This вы также можете проверить правильность диапазона чисел.

0

Вы всегда можете использовать Googles Guava

String text = "13567"; 
CharMatcher charMatcher = CharMatcher.DIGIT; 
int output = charMatcher.countIn(text); 
0

Это должно работать:

public static boolean isInteger(String p_str) 
{ 
    if (p_str == null) 
     return false; 
    else 
     return p_str.matches("^\\d*$"); 
} 
Смежные вопросы