2015-10-25 4 views
3
do{ 
     try{ 
      input = (String) JOptionPane.showInputDialog(null,"Food quantity","Dope Alley",JOptionPane.QUESTION_MESSAGE); 
      quantity = Integer.parseInt(input); 
      if(quantity <= 0 || quantity > 100){ 
       JOptionPane.showMessageDialog(null,"Invalid input . Number only .\n\nMininum order = 1\nMaximum order = 100","Dope Alley",JOptionPane.ERROR_MESSAGE); 
      } 
     }catch(NumberFormatException e){ 
      JOptionPane.showMessageDialog(null,"Invalid input . Number only .\n\nMininum order = 1\nMaximum order = 100","Dope Alley",JOptionPane.ERROR_MESSAGE); 
     } 
    }while(quantity <= 0 || quantity > 100); 

catch (NumberFormatException e) Как уточнить переменную e в моем коде? в моем коде программа указала, что переменная e не используется. так как я могу использовать егоКак проверить целое поле, если пользователь ничего не вводит?

ответ

5

Вы можете использовать регулярное выражение. \\d+ будет соответствовать последовательным цифрам. Кроме того, я бы предложил цикл do-while. Что-то вроде

int quantity = -1; 
do { 
    input = (String) JOptionPane.showInputDialog(null, "Food quantity", 
      "Dope Alley", JOptionPane.QUESTION_MESSAGE); 
    if (input.matches("\\d+")) { 
     quantity = Integer.parseInt(input); 
    } 
} while(quantity < 1 || quantity > 100); 
+1

Может ' "\\ d {1,8}"' предотвратить Smarty-штаны переполнения :) – Bohemian

+0

если количество -1, я думаю, что если пользователь поставил 0 это будет продолжаться –

+0

@ZaemShakkir Нет, потому что '0' и' -1' меньше, чем '1'. –

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