所以我正在制作二进制到十进制转换器,如果用户输入非法参数,我应该捕获无效字符。就像用户在二进制字段中输入1501一样,我的程序将需要捕获第一个非法参数,然后将其输出回用户以向他们显示他们的错误。
我的问题是我无法从我的isBinary类中获取我的illegal_char变量进入我的parseBinary类。
public class Assignment2_gui extends javax.swing.JFrame
{
public int parseBinary(String binary) throws NumberFormatException {
if (!isBinary(binary)) {
throw new NumberFormatException("Invalid Format for a Binary String - Illegal character: " + illegal_char);
}
int power = 0;
int decimal = 0;
for (int i = binary.length() - 1; i >= 0; i--) {
if (binary.charAt(i) == '1') {
decimal += Math.pow(2, power);
}
power++;
}
return decimal;
}
public boolean isBinary(String binary) {
int illegal_char;
for (char ch : binary.toCharArray()) {
if (ch != '1' && ch != '0'){
illegal_char = ch;
return false;
}
}
return true;
}
}
我尝试过使用静态/非静态类,但这似乎并不重要。我也尝试过使用:
throw new NumberFormatException("Invalid Format for a Binary String - Illegal character: " + isBinary(illegal_char));
但我仍然无法确定。我怀疑我的isBinary是一个布尔类,所以它永远不会返回一个int?这是否意味着我需要建立一个单独的类来捕获非法的char?
答案 0 :(得分:0)
你说的是对的。你的方法只返回布尔值,所以如果你想返回无效的字符,你必须创建一个完全不同的方法来返回无效的字符,或者编辑你当前的字符,以便它返回字符,或者你想要的任何字符串返回你想要的东西。