我在这里遇到一点问题可能是因为我无法弄清楚如何使用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");
}
答案 0 :(得分:5)
您正在使用原始布尔值,因此您需要将其初始化为true或false。您可以改为使用包装器java.lang.Boolean。
答案 1 :(得分:2)
为了扩展它,Boolean实际上是三态:true,false或null。所以你可以把
Boolean input1 = null;
...
if (input1 == null) ...
答案 2 :(得分:0)
对于局部变量,我们需要在使用之前初始化它们,而对于类/实例变量,它们被隐式初始化为默认值(对象的情况下为null)
答案 3 :(得分:0)
要么使用可以具有true / false / null的布尔类,要么使用另一个变量来指示它们是否已初始化:您可以将它们初始化为false,添加另一个变量isInit并将其初始化为false,一旦初始化变量将isInit切换为true,这样就可以检查它们是否使用isInit初始化