2014-02-15 2 views
7

у меня есть:Как проверить, является ли строка допустимым целым числом?

op1 = Integer.parseInt(jTextField1.getText()); 
op2 = Integer.parseInt(jTextField2.getText()); 

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

Я шел через это в течение долгого времени, так что, если это было уже задавала здесь, простите меня

+0

', если (OP1 == 0)'? Я не уверен, что вы спрашиваете. –

+0

Вот почему я сказал, что трудно объяснить. Я хочу проверить, могу ли я присвоить значение переменной – Dannyl

+2

Подождите, вы говорите, что 'if ((int i = 0) == true)' действительно C-код ?! – NPE

ответ

14

Вы не можете сделать if (int i = 0), поскольку назначение возвращает присвоенное значение (в данном случае 0) и if ожидает выражение, которое вычисляет либо true или false.

С другой стороны, если ваша цель состоит в том, чтобы проверить, возвращает ли jTextField.getText() числовое значение, которое может быть разобрано на int, вы можете попытаться сделать синтаксический анализ и, если значение не подходит, NumberFormatException будет поднят, дать тебе знать.

try { 
    op1 = Integer.parseInt(jTextField1.getText()); 
} catch (NumberFormatException e) { 
    System.out.println("Wrong number"); 
    op1 = 0; 
} 
+1

Использование исключения в качестве механизма ветвления не рекомендуется. Если ввод, скорее всего, будет искаженным, должна быть выполнена явная проверка действительности, а не исключение прилова. – Witiko

+0

Typo: 'NumericFormatException' должно быть' NumberFormatException'. –

0

В принципе, вы должны решить, чтобы проверить, является ли данная строка является допустимым числом или просто предположим, что данная строка является действительным целым числом, и при разборе может возникнуть исключение.

+0

Я хочу проверить, является ли строка допустимым целым числом – Dannyl

+1

. Тогда, пожалуйста, ищите SO для себя, эта тема столь же стара, как Java. – Smutje

+0

Вы могли бы задать вопрос, а не жаловаться. – Dannyl

1

parseInt throws NumberFormatException, если он не может преобразовать String в int. Таким образом, вы должны окружать вызовы parseInt блоком catch catch и поймать это исключение.

2

Это работает для меня. Просто определить, является ли String примитивным или числом.

private boolean isPrimitive(String value){ 
 
     boolean status=true; 
 
     if(value.length()<1) 
 
      return false; 
 
     for(int i = 0;i<value.length();i++){ 
 
      char c=value.charAt(i); 
 
      if(Character.isDigit(c) || c=='.'){ 
 
       
 
      }else{ 
 
       status=false; 
 
       break; 
 
      } 
 
     } 
 
     return status; 
 
    }

Смежные вопросы