循环运行时出现 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选项中没有提到它。 使用答案中的代码,您不会收到关于未初始化变量 choiceCountchoiceCount2 的错误。它与您问题中的代码的不同之处在于,在声明变量的地方,它们被初始化为值为 0。答案中代码的第一行为int choiceCount = 0;,它将choiceCount 初始化为值为0 我没有将choiceCout改为0 我错过了。我修剪了脂肪,去掉了额外的代码并简化了它。我想多了。 感谢 Sandesh 和 Evan

以上是关于循环运行时出现 Java 逻辑错误:If/else 计数器计数不正确的主要内容,如果未能解决你的问题,请参考以下文章

在java 8 stream表达式中实现if/else逻辑

在java 8 stream表达式中实现if/else逻辑

使用循环将信息流传递给setter时出现运行时错误

使用循环运行后台获取时出现 NSInternalInconsistencyException

使用 XStream 时出现 ArrayIndexOutOfBoundsException

通过 java 类运行时出现 ORA-00936 错误