循环运行时出现 Java 逻辑错误:If/else 计数器计数不正确
Posted
技术标签:
【中文标题】循环运行时出现 Java 逻辑错误:If/else 计数器计数不正确【英文标题】:Java Logic error on run of loop: If/else counter incorrectly counting 【发布时间】:2016-12-26 11:40:30 【问题描述】:如果这个太模糊,请告诉我:
我有一个可以编译和运行的循环,但它没有按我的意愿执行。 我正在尝试计算做出 if/else 选择的次数,只要循环运行,然后显示做出该选择的次数。
选择有效,循环有效,但如果我将未选择的选择编码为 0,那么如果下一次选择了另一个选择,则第一个选择的累积计数将返回 0。或两者兼而有之选择是累积的。
我有 4 个 if/else 问题,但它们的编码方式相似,以相同的方式运行。如果我能修复一个,我可以修复其余的。
这里是代码的相关部分。 (过去有人要求我不要放这么多代码,如果只有部分起作用。)
int choiceCount;
int choiceCount2;
while(quitYn == 1)
System.out.println("I am ready for the next participant.");
System.out.println("");
System.out.println("");
System.out.println("What would you rather have?");
System.out.println("Enter 1 for Love or 2 for Money.");
surveyChoice = input.nextInt();
if(surveyChoice == 1)
choice = FIRST_PICK;
message = "Love";
choiceCount = ++ FIRST_CHOICE - 1;
choiceCount2 = ++ SECOND_CHOICE - 3;
else if(surveyChoice == 2)
choice = SECOND_PICK;
message = "Money";
choiceCount = ++ FIRST_CHOICE - 1;
choiceCount2 = ++ SECOND_CHOICE - 2;
else
choice = "Broken dreams";
message = "Broken dreams";
choiceCount = ++ FIRST_CHOICE - 2;
choiceCount2 = ++ SECOND_CHOICE - 3;
System.out.println(choiceCount + "Participants chose" + FIRST_PICK);
System.out.println(choiceCount2 + "Participants chose" + SECOND_PICK);
【问题讨论】:
请解释一下这段代码:choiceCount = ++ FIRST_CHOICE - 1;
好像你只是想要choiceCount++;
但也许我错过了什么?
看起来像java,请添加java标签。
如果我把选择计数放在每个部分中,那么即使没有选择的选择我也会得到计数。我试图让它知道什么时候不计数,什么时候计数。
【参考方案1】:
根据你对问题的理解,你需要这样的东西
int choiceCount = 0;
int choiceCount2 = 0;
while(quitYn == 1)
System.out.println("I am ready for the next participant.");
System.out.println("");
System.out.println("");
System.out.println("What would you rather have?");
System.out.println("Enter 1 for Love or 2 for Money.");
surveyChoice = input.nextInt();
if(surveyChoice == 1)
choice = FIRST_PICK;
message = "Love";
choiceCount++;
else if(surveyChoice == 2)
choice = SECOND_PICK;
message = "Money";
choiceCount2++;
else
choice = "Broken dreams";
message = "Broken dreams";
System.out.println(choiceCount + "Participants chose" + FIRST_PICK);
System.out.println(choiceCount2 + "Participants chose" + SECOND_PICK);
【讨论】:
只有当我得到变量choiceCount可能没有被初始化的错误时,这可能才有效,因为在else if和else选项中没有提到它。 使用答案中的代码,您不会收到关于未初始化变量choiceCount
或 choiceCount2
的错误。它与您问题中的代码的不同之处在于,在声明变量的地方,它们被初始化为值为 0。答案中代码的第一行为int choiceCount = 0;
,它将choiceCount
初始化为值为0
。
我没有将choiceCout改为0
我错过了。我修剪了脂肪,去掉了额外的代码并简化了它。我想多了。
感谢 Sandesh 和 Evan以上是关于循环运行时出现 Java 逻辑错误:If/else 计数器计数不正确的主要内容,如果未能解决你的问题,请参考以下文章
使用循环运行后台获取时出现 NSInternalInconsistencyException