我推迟问这个问题,因为它一定是愚蠢的东西,而且考虑到我也问过这个问题,我犹豫了,并且花了最后几个小时变得越来越沮丧: Last line of for loop executed twice?
我认为这可能是一种类似的疏忽。
我也发现了这个,它处理了类似的问题: Java Exception printing twice
但似乎仍无法解决我的问题。
以下是一个类的摘录:
switch (Integer.parseInt(oc, 16))
{
case 0x0F:
ccrFlagState.zBit(true);
break;
}
在另一个中调用此代码段:
public boolean zBit(boolean set) {
if (set = true) {
System.out.println("Z set in CCR class");
}
return set;
}
当我输入0F
时,控制台会两次打印Z set in CCR class
。
有人能指出我正确的方向吗?谢谢,罗伯特。
CNC中 我应该补充一点,我得到了相同的结果:
if (set)
和
if (set == true)
答案 0 :(得分:3)
(您的条件必须为set == true
。set = true
将变量分配给true
,然后始终评估为true
。)
您有多确定没有两次致电zBit
?使用调试器来确定。
您没有某种日志包装器或系统可能拦截并重复System.out
行?
答案 1 :(得分:3)
这对我来说是不可复制的。此代码仅打印一次。请提供更多代码......
public static void main(String[] args) {
String oc = "0F";
switch (Integer.parseInt(oc, 16)) {
case 0x0F:
zBit(true);
break;
}
}
public static boolean zBit(boolean set) {
if (set) {
System.out.println("Z set in CCR class");
}
return set;
}