有人可以解释一下这是怎么回事吗?为什么是“无法从静态上下文引用的非静态变量”。出现在此代码中?我尝试将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的实例。

您有两种选择:


声明BinaryFormatExceptionstatic
BinaryFormatException类代码移到binaryToDecimal类之外。

09-26 12:02