所以我正在制作一个记忆类型游戏,问题是程序没有输入if语句,即使我知道它检查的值是相等的,因为我在if语句之前打印了两个值。它们都是1.我知道if语句因此而满足/为真。我知道它没有进入循环,因为我在循环中放置了一个print语句,并且没有看到控制台显示if语句。因此,我将发布一小段代码 - 我认为相关的代码,因为如果我发布整个代码,人们会生气。如果您需要整个代码,请告诉我,我会发布。无论如何,我打印到我的控制台的是:
1
1
注意声明如何:“圆形完成”。什么时候应该没有。
以下是代码:
else {
System.out.println(++numberOn);
System.out.println(currentPattern.size());
if (++numberOn==currentPattern.size()) {
System.out.println("Round finished.");
score++;
numberOn=0;
displayPattern();
}
else {
numberOn++;
}
}
程序正在输入100%的大/第一个语句,否则前两个语句将不会运行。所以我需要知道为什么当双方彼此相等时,if语句第4行没有运行。提前谢谢。
答案 0 :(得分:5)
++numberOn
并不简单地返回numberOn
加1的值。它还会增加numberOn
的实际值。执行System.out.println(++numberOn)
后,您需要在numberOn
的值中添加一个并将其打印出来。如果您稍后执行++numberOn
,则会在变量中添加另一个,然后比较该值。所以numberOn + 1
代替++numberOn
,除非你实际上意味着来改变变量。
作为旁注,这就是为什么许多人(包括我自己)倾向于主张只在他们自己的行上进行++
操作。所以
++numberOn;
if (numberOn == ...) { ... }
我想你将++numberOn
复制粘贴到print语句中,而不是考虑增加两次的含义。这是一个容易犯的错误,因此在自己的行上进行此类操作将最大限度地降低风险并使突变更加明显。