有人可以解释一下这是怎么回事吗?为什么是“无法从静态上下文引用的非静态变量”。出现在此代码中?我尝试将parseBinary更改为非静态。我尝试将BinaryFormatException类更改为static ...(不允许)。我对这个错误的了解非常薄弱。我知道我通常可以交换一些静态词和公共词,并使它正常工作。没有这种运气。这是一个作业问题……但是工作不会围绕该错误展开。它与创建自定义异常类有关,该异常类在二进制字符串格式不正确时抛出。因此,尽管我的问题可以帮助我回答问题,但不会给我答案。
public class binaryToDecimal {
public static void main(String[] args) {
try {
System.out.println(parseBinary("10001"));
System.out.println(parseBinary("101111111"));
} catch (BinaryFormatException ex) {
ex.getMessage();
}
}
public static int parseBinary(String binaryString)
throws BinaryFormatException {
int value = 0;
for (int i = 0; i < binaryString.length(); i++) {
char ch = binaryString.charAt(i);
if (ch != '0' && ch != '1') {
throw new BinaryFormatException(String message);
value = 0;
} else
value = value * 2 + binaryString.charAt(i) - '0';
}
return value;
}
class BinaryFormatException extends Exception {
public BinaryFormatException(String message) {
super(message);
}
}
}
最佳答案
看来您已经将BinaryFormatException
定义为公共类binaryToDecimal
的内部类。这意味着您需要binaryToDecimal
的实例才能具有BinaryFormatException
的实例。但是,您位于static
方法的parseBinary
上下文中。没有binaryToDecimal
的实例。
您有两种选择:
声明BinaryFormatException
类static
。
将BinaryFormatException
类代码移到binaryToDecimal
类之外。