System.out调用打印两次

时间:2012-06-29 19:20:59

标签: java printing console boolean

我推迟问这个问题,因为它一定是愚蠢的东西,而且考虑到我也问过这个问题,我犹豫了,并且花了最后几个小时变得越来越沮丧: 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)

2 个答案:

答案 0 :(得分:3)

(您的条件必须为set == trueset = 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;
}