gpt4 book ai didi

java - JTextField 中显示异常

转载 作者:行者123 更新时间:2023-11-30 02:40:40 31 4
gpt4 key购买 nike

我的代码执行一些算术将二进制输入转换为十进制输出。我还创建了一个异常类,它扩展了 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);
}

最佳答案

从本质上讲,您尝试做的事情是行不通的。 BinaryNumberFormatException 没有声明它抛出任何异常(假设您使用的是 NetBeans),您将无法(轻松)修改它。

您可以将所有代码包装在方法内的 try-catch block 中,但这只是,嗯,有点困惑(恕我直言)

相反,我可能会做的是创建一个进行对话的类,例如......

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());
}
}

这将允许以更简洁的方式处理成功和不成功的操作。

这使得代码更可重用并且更易于管理。

作为一个想法

关于java - JTextField 中显示异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41822501/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com