Java 在JTextField中显示异常
我的代码做了一些算术运算,将二进制输入转换为十进制输出。我还创建了一个异常类,该类扩展NumberFormatException,以便在输入不是1或0时引发错误。我想要的是将异常抛出到JTextFieldJava 在JTextField中显示异常,java,exception,throw,Java,Exception,Throw,我的代码做了一些算术运算,将二进制输入转换为十进制输出。我还创建了一个异常类,该类扩展NumberFormatException,以便在输入不是1或0时引发错误。我想要的是将异常抛出到JTextField private void biTodeciActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling c
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告诉我它不知道这个方法。它们都在默认包中。如果没有一个演示您的问题的示例,就不可能知道代码还有什么问题。我让它工作了。你的回答对我帮助很大,谢谢!很高兴它能帮上忙;)