2013-12-09 3 views
2

Приветствую всех, я хотел бы попросить кого-нибудь помочь мне. Я хочу написать метод в том же классе для использования NumberFormatException, который принимает значение JTextField и проверяет, является ли оно номером и печатает. Кроме того, как реализовать этот код в методе actionPerformed?NumberFormatException method

Это основной метод

public class main { 
    public static void main(String args[]){ 
     JavaApplication19 is = new JavaApplication19("title"); 
     is.setVisible(true); 
    } 
} 

Этот класс GUI:

public class JavaApplication19 extends JFrame{ 
    private final JButton button; 
    private final JTextField text; 
    private final JLabel lable; 



    /** 
    * @param args the command line arguments 
    */ 
    public JavaApplication19(String title){ 
     setSize(500, 200); 
     setTitle(title); 
     setDefaultCloseOperation(JavaApplication19.EXIT_ON_CLOSE); 

     button = new JButton("enter only number or i will kill you"); 
     text = new JTextField(); 
     lable = new JLabel("numbers only"); 
     JPanel rbPanel = new JPanel(new GridLayout(2,2)); 
     rbPanel.add(button); 
     rbPanel.add(text); 
     rbPanel.add(lable); 

     Container pane = getContentPane(); 
     pane.add(rbPanel); 

     button.addActionListener(new ButtonWatcher()); 

     private class ButtonWatcher implements ActionListener{ 

     public void actionPerformed(ActionEvent a){ 
      Object buttonPressed=a.getSource(); 
      if(buttonPressed.equals(button)) 
      { 

      } 
     } 
    } 
} 
+0

Вы знаете, как использовать блоки 'try/catch'? –

+0

'try {something} catch (NumberFormatException ex) {сделать что-то}' –

+0

yes it most try/catch, и это самый метод –

ответ

1
if(buttonPressed.equals(button)) 
{ 
    try { 
     // try something 
    } 
    catch (NumberFormatException ex) { 
     // do something 
    } 
} 

// try something должен быть код, в котором вы получаете текст ввода и синтаксического анализа (например, Integer.parseInt(textField.getText())) , Если синтаксический анализ не работает, потому что что-то, чем число не вошел, он будет бросать NumberFormatException

См Exceptions tutorial, если Вам необходима дополнительная информация о том, как использовать исключения

Edit: Метод

что-то простое, как это будет работать

public int parseInput(String input) throws NumberFormatException { 
    return Integer.parseInt(input); 
} 

Или что-то вроде этого, если вы хотите, чтобы поймать исключение

public static int parseInput(String input) { 
    int number = 0; 
    try { 
     number = Integer.parseInt(input); 
    } catch (NumberFormatException ex) { 
     someLabel.setText("Must be a number"); 
     return -1; // return 0 
    } 
} 

Затем в actionPerformed вы можете сделать что-то вроде этого

if(buttonPressed.equals(button)) 
{ 
    int n; 
    if (parseInput(textField.getText()) != -1){ 
     n = parseInput(textField.getText()); 
     // do something with n 
    } 
} 

Edit: логический метод

public boolean isNumber(String input){ 
    for (char c : input.toCharArray()){ 
     if (!Character.isDigit(c)) 
      return false; 
    } 
    return true; 
} 

Использование

if(buttonPressed.equals(button)) 
{ 
    if (isNumber(textField.getText()){ 
     // do something 
    } 
} 

Edit: или catch исключение

public boolean isNumber(String input){ 
    try { 
     Integer.parseInt(input); 
     return true; 
    } catch (NumberFormatException ex){ 
     return false; 
    } 
} 
+0

Я думаю, что это самый метод, который принимает один аргумент, который является значением текстового поля и возвращает true, если оно истинно и ложно, если оно ложно –

+0

Просто создайте метод, который генерирует исключение. См. Мое редактирование. –

+0

Можете ли вы показать мне, как вы его реализуете в коде, другое дело, которое оно больше возвращает true, если оно истинно и ложно, если оно ложно. –