0

我推迟了这个问题,因为它一定很愚蠢,而且考虑到也是我提出这个问题,我犹豫了,在过去的几个小时里变得越来越沮丧: for 循环的最后一行执行了两次?

我认为这可能是一种类似的疏忽。

我还发现了这个,它处理了一个类似的问题: Java Exception printing two

但似乎仍然无法解决我的问题。

这是一个类的片段:

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两次。

谁能指出我正确的方向,为什么?谢谢,罗伯特。

-编辑-我应该补充一点,我得到了相同的结果:

if (set)

if (set == true)
4

2 回答 2

3

(您的条件需要是set == true.set = true将变量分配给true,然后总是评估为true。)

你有多确定你没有打zBit两次电话?使用调试器确定。

您没有某种可能拦截和重复System.out行的日志记录包装器或系统吗?

于 2012-06-29T19:24:13.413 回答
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;
}
于 2012-06-29T19:39:02.200 回答