您好我有以下代码:
medianListTester.cfyPE = 0;
if (medianListTester.cfyPE != 0 || testStock.getCEPS() != 0)
{
medianCYPE_price = medianListTester.cfyPE * testStock.getCEPS();
counter++;
}
else
//do something else
但它似乎没有“做其他事情”仍然会触发条件内的代码。我在这里做错了吗?为什么不在if语句中运行代码?
答案 0 :(得分:2)
如果testStock.getCEPS()不为0,则不会触及else块。根据您的需要和您的期望,您可能需要使用&&而不是|| ?
答案 1 :(得分:1)
medianListTester.cfyPE设置为0,因此if语句中的第一个子句的计算结果为false。 TestStock.getCEPS()有什么作用?如果它不为零,那么将评估为true,然后整个if语句为真。
答案 2 :(得分:1)
我无法真正告诉你他们在问什么,但是你要两次调用getCEPS(),也许这会返回两个不同的值,也许这会导致你的麻烦。
请改为尝试:
medianListTester.cfyPE = 0;
var ceps = testStock.getCEPS();
if (medianListTester.cfyPE != 0 || ceps != 0)
{
medianCYPE_price = medianListTester.cfyPE * ceps;
counter++;
}
else
//do something else
答案 3 :(得分:0)
听起来testStock.getCEPS()
正在返回0以外的东西。这可以解释为什么它永远不会发出do something else
。你有没看过这回来了什么?
答案 4 :(得分:0)
对testStock.getCEPS()的调用有什么价值?如果不是0,它仍将进入该代码块。另外,我不知道medianListTester引用的对象的细节,但是可能有一个getter / setter无法正常工作。
解决这个问题的最佳方法是在分配之后但在if语句之前打印或以某种方式查看medianListTester.cfyPE和testStock.getCEPS()的值。