2017-01-24 18 views
1

Мой код выполняет некоторую арифметику для преобразования двоичного ввода в десятичный вывод. Я также создал класс исключений, который расширяет NumberFormatException, чтобы выдать ошибку, если вход не равен 1 или 0. То, что я хочу, это выбросить исключение в JTextField.Экземпляр отображения в JTextField

private void biTodeciActionPerformed(java.awt.event.ActionEvent evt) {           
    // TODO add your handling code here: 
String binary; 
binary = binaryStringText.getText(); 
int total = 0; 
for(int i = 0; i < binary.length(); i++) 
{ 
    if (binary.charAt(i) != '0' && binary.charAt(i) != '1') 
    { 
     throw new ParseMethods.BinaryNumberFormatException(binary.charAt(i)+" is not" 
       +" a valid binary input."); 
    } 
    else if(binary.charAt(i) == '1'){ 
     total += Math.pow(2, (binary.length()-1)-i); 
    } 
} 

deciOut.setText(""+total); 
} 
+1

Вы не можете «бросать» исключение из метода, который не определяет его. Так что ты застрял в этом. В вашем случае я просто позвоню 'setText' текстового поля, передав информацию, которую вы хотите (при условии, что вы хотите отобразить исключение в поле) или более практически, используйте' JOptionPane' для отображения сообщения об ошибке – MadProgrammer

ответ

2

По существу, то, что вы пытаетесь сделать, не будет работать. BinaryNumberFormatException не заявляет, что он выбрасывает все исключения (и если вы используете NetBeans), вы не сможете (легко) его модифицировать.

Вы можете обернуть все, что вам код в try-catch блоке в рамках метода, но это просто, ну, вроде неаккуратно (ИМХО)

Вместо того, что я мог бы сделать, это создать класс, который делает разговор, что-то вроде ...

public static class BinaryConverter { 
    public static String toDecimal(String binary) throws BinaryNumberFormatException { 
     //... 
    } 

    // Maybe a toBinary method as well... 
} 

например. toDecimal заявляет о том, что он будет бросать BinaryNumberFormatException (хотя я думаю, что какой-то синтаксического исключения будет лучше)

Затем в действие, выполняемое методом, вы могли бы сделать что-то вроде ...

private void biTodeciActionPerformed(java.awt.event.ActionEvent evt) { 
    try { 
     deciOut.setText(BinaryConverter.toDecimal(binaryStringText.getText())); 
    } catch (BinaryNumberFormatException exp) { 
     exp.printStackTrace(); 
     deciOut.setText(exp.getMessage()); 
    } 
} 

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

Это делает код более многоразовым и легче управлять.

Как идея

+0

Ну, у меня уже есть методы для paseBinary, которые берут ввод String и возвращают int. Но когда я пытаюсь назвать это в biTodeciActionPerformed (java.awt.event.ActionEvent evt), Netbeans говорит мне, что он не знает о методе. Они оба находятся в пакете по умолчанию. –

+0

Без [runnable example] (https://stackoverflow.com/help/mcve), который демонстрирует вашу проблему, невозможно узнать, что еще не так с кодом. – MadProgrammer

+0

Я получил его для работы. Ваш ответ мне очень помог! –

0

печати исключение непосредственно в текстовое поле в строчном формате deciOut.setText ("" + ехр);

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

  • Нет связанных вопросов^_^