【问题标题】:Java boolean not behaving with breakpoints in if statementJava布尔值在if语句中没有断点
【发布时间】:2012-02-13 10:46:27
【问题描述】:

基本上,当我移动断点时,这段代码的行为似乎有所不同

    int checker = something.length(); /* something is the value of an edittext */

    boolean badInput = false;

    if(checker == 0)
    {
        badInput = true;
    }

    if(checker > 12)
    {
        badInput = true;
    }

*1  if(badInput = false)
    {
*2      /* A lot of 
               code to do 
               if the 
               input is GOOD */
    }
    else
    {
            /* Alert that the input is BAD */
    }

当我在 第一个断点 (1) 的编辑文本中输入 2 位数字 时,badInput 会给出错误,这是应该的。

问题出在这里:当我只使用 第二个断点 (2) 完全相同 时,代码会转到 @ 987654323@ 语句和警报,即使输入完全相同。

有人知道为什么会这样吗?

【问题讨论】:

  • 不知道是否与您的断点问题有关,但if (badInput = false) 应该是if (badInput == false),或者更好的是if (!badInput)

标签: java if-statement boolean


【解决方案1】:

这个:

if(badInput = false)

应该是:

if(badInput == false)

或者最好:

if (!badInput)

第一个是执行分配,而不是比较。表达式badInput = false 的整体结果也是赋值(false),因此它永远不会进入if 的主体。

“使用”断点输入数据的意思并不是很清楚,但基本上问题出在您的代码中。

【讨论】:

    【解决方案2】:

    你应该有:

    if(!badInput)
    

    if(badInput==false)
    

    (第一个更好)

    【讨论】:

      【解决方案3】:

      简单的拼写错误,

      if(badInput = false)
      

      应该是

      if(badInput == false)
      

      你想要一个比较而不是分配。

      【讨论】:

        【解决方案4】:

        你用 == 运算符检查布尔变量?!! 您必须检查如下:

        if(!badInput) //for false value
            or 
        if(badInput)  //for true value
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-03-01
          • 2018-04-17
          • 2014-08-19
          • 1970-01-01
          • 2021-08-03
          • 2013-03-26
          • 2015-02-22
          相关资源
          最近更新 更多