ここで少し問題があります。おそらく、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");
}