Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在JTextField中显示异常_Java_Exception_Throw - Fatal编程技术网

Java 在JTextField中显示异常

Java 在JTextField中显示异常,java,exception,throw,Java,Exception,Throw,我的代码做了一些算术运算,将二进制输入转换为十进制输出。我还创建了一个异常类,该类扩展NumberFormatException,以便在输入不是1或0时引发错误。我想要的是将异常抛出到JTextField private void biTodeciActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling c

我的代码做了一些算术运算,将二进制输入转换为十进制输出。我还创建了一个异常类,该类扩展NumberFormatException,以便在输入不是1或0时引发错误。我想要的是将异常抛出到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);
}
private void bitodeciationperformed(java.awt.event.ActionEvent evt){
//TODO在此处添加您的处理代码:
字符串二进制;
binary=binaryStringText.getText();
int-total=0;
对于(int i=0;i
从本质上讲,你试图做的事情是行不通的。
BinaryNumberFormatException
没有声明它抛出任何异常(假设您使用的是NetBeans),您将无法(轻松)修改它

您可以将所有代码包装在方法中的
try-catch
块中,但这有点混乱(IMHO)

相反,我可能要做的是创建一个类来进行对话,比如

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

    // Maybe a toBinary method as well...
}
private void biTodeciActionPerformed(java.awt.event.ActionEvent evt) { 
    try {
        deciOut.setText(BinaryConverter.toDecimal(binaryStringText.getText()));
    } catch (BinaryNumberFormatException exp) {
        exp.printStackTrace();
        deciOut.setText(exp.getMessage());
    }
}
比如说。
toDecimal
声明它将抛出一个
BinaryNumberFormatException
(尽管我认为某种解析异常会更好)

然后在你的动作执行方法中,你可以做一些像

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

    // Maybe a toBinary method as well...
}
private void biTodeciActionPerformed(java.awt.event.ActionEvent evt) { 
    try {
        deciOut.setText(BinaryConverter.toDecimal(binaryStringText.getText()));
    } catch (BinaryNumberFormatException exp) {
        exp.printStackTrace();
        deciOut.setText(exp.getMessage());
    }
}
这将允许以更简洁的方式处理成功和失败的操作

这使得代码更加可重用,更易于管理


作为一种想法

将异常直接以字符串格式打印到文本字段中
deciOut.setText(“+exp”)

您不能从未定义异常的方法中抛出异常。所以你有点受不了了。在您的情况下,我只需调用文本字段的
setText
,传递您想要的信息(假设您想要在字段中显示异常),或者更实际地使用
JOptionPane
来显示错误消息,我已经有了paseBinary的方法,它接受一个字符串输入并返回一个int。但是当我尝试在biTodeciActionPerformed(java.awt.event.ActionEvent evt)中调用它时,Netbeans告诉我它不知道这个方法。它们都在默认包中。如果没有一个演示您的问题的示例,就不可能知道代码还有什么问题。我让它工作了。你的回答对我帮助很大,谢谢!很高兴它能帮上忙;)