0

我在这里遇到了一个小问题,可能是因为我不知道如何使用 try 和 catch。

我的方法有点长,但我认为问题很简单。我遇到了 input1 input2 和 input3 变量未初始化的问题 - 我无法初始化它们,因为我需要程序在未定义此变量的情况下返回错误,并且我无法null继续查找此错误.

如何进行?

public void print() {
    boolean input1;
    boolean input2;
    boolean input3;
    String gate;
    boolean calc;

    for (String a : operations.keySet()) {
        if (Gate2.contains(operations.get(a).Gate)) {
            if (inputs.containsKey(operations.get(a).input1)) {
                input1 = inputs.get(operations.get(a).input1);
            }
            if (inputs.containsKey(operations.get(a).input2)) {
                input2 = inputs.get(operations.get(a).input2);
            }
            if (result.containsKey(operations.get(a).input1)) {
                input1 = result.get(operations.get(a).input1);
            }
            if (result.containsKey(operations.get(a).input2)) {
                input2 = result.get(operations.get(a).input2);
            }
            gate = operations.get(a).Gate;
            calc = cc.calc(input1, input2, gate);
            result.put(a, calc);

        }else if (Gate3.contains(operations.get(a).Gate)) {
            if (inputs.containsKey(operations.get(a).input1)) {
                input1 = inputs.get(operations.get(a).input1);
            }
            if (inputs.containsKey(operations.get(a).input2)) {
                input2 = inputs.get(operations.get(a).input2);
            }
            if (inputs.containsKey(operations.get(a).input3)) {
                input3 = inputs.get(operations.get(a).input3);
            }
            if (result.containsKey(operations.get(a).input1)) {
                input1 = result.get(operations.get(a).input1);
            }
            if (result.containsKey(operations.get(a).input2)) {
                input2 = result.get(operations.get(a).input2);
            }
            if (result.containsKey(operations.get(a).input3)) {
                input3 = result.get(operations.get(a).input3);
            }
            gate = operations.get(a).Gate;
            calc = cc.calc(input1,input2,input3, gate);
            result.put(a, calc);

        }else if ("not".equals(operations.get(a).Gate)) {
            if (inputs.containsKey(operations.get(a).input1)) {
                input1 = inputs.get(operations.get(a).input1);
            }

            if (result.containsKey(operations.get(a).input1)) {
                input1 = result.get(operations.get(a).input1);
            }

            gate = operations.get(a).Gate;
            calc = cc.calc(input1, gate);
            result.put(a, calc);
        }

    }

    System.out.format(" Inputs --> ");
    for (String a : inputs.keySet()) {

        int bit2 = inputs.get(a) ? 1 : 0;
        System.out.format("%5s", bit2);
    }
    System.out.format(" Results --> ");
    for (String a : result.keySet()) {

        int bit2 = result.get(a) ? 1 : 0;
        System.out.format("%3s", bit2);
    }
    System.out.format("\n");

}
4

4 回答 4

6

您正在使用原始布尔值,因此您需要将其初始化为真或假。您可以改用包装器java.lang.Boolean

于 2012-12-04T10:10:54.223 回答
2

为了扩展这一点,布尔值实际上是三态的:真、假或空。所以你可以把

Boolean input1 = null;
...
if (input1 == null) ...
于 2012-12-04T10:23:29.160 回答
0

对于局部变量,我们需要在使用前对其进行初始化,而对于类/实例变量,它们被隐式初始化为默认值(在对象的情况下为 null)

于 2012-12-04T10:26:27.163 回答
0

要么使用可以具有 true/false/null 的布尔类,要么使用另一个变量来指示它们是否已初始化:你可以将它们初始化为 false,添加另一个变量 isInit 并将其初始化为 false,一旦你初始化变量 switch isInit为真,这样你可以检查它们是否使用 isInit 初始化

于 2012-12-04T10:31:31.123 回答