布尔语句不起作用? [复制]

Posted

技术标签:

【中文标题】布尔语句不起作用? [复制]【英文标题】:Booleans statement not working? [duplicate] 【发布时间】:2013-01-31 17:39:19 【问题描述】:

下面的代码我接受两个数组并比较它们。当它们都相同时,我会显示正确的消息,但是当它们为假时,两条消息都会显示。显示 System.out.println("identical"); 的最后一个 if 语句似乎总是显示,即使布尔值为 false。这是为什么呢???

public static void compareArrays(int[] a, int[] n)

  boolean b = false;
  for (int i = 0; i < n.length; i++) 
    if (n[i] == a[i]) 
        b = true;
     else 
        b = false;
        System.out.println("different");
        break;
    
   

  if (b = true)
    System.out.println("identical");
   

【问题讨论】:

+1 来抵消反对票,因为我认为这是不应该的。问什么很明显,我不确定作为一个没有经验的程序员我会搜索什么来找到这个问题的答案。 -1。非常令人困惑,您显着改变了问题。而是让问题中的错误,并将答案标记为已接受。不过,请修复 IDE 中的错误;) @user2052514,将您的代码编辑恢复到以前的版本,否则以下所有答案都将失效:) 别忘了mark the best and real solution as an answer 我回滚了最后的更改,因为它的编辑使问题变得毫无意义 【参考方案1】:

改变这个:

if (b = true)
    System.out.println("identical");
 

到:

if (b == true)
    System.out.println("identical");
 

或更好

if (b)
    System.out.println("identical");
 

你是在赋值而不是比较。

【讨论】:

+1 对于“或更好”部分。【参考方案2】:

= 是一个赋值运算符。 == 是相等运算符。

if (b = true)

应该是

if (b ==true)

或者b 是简单的布尔值:

  if(b) 

【讨论】:

【参考方案3】:

好吧,您不会将 b 与 true 进行比较,而是在执行 if 语句之前设置它。

将 if 语句更改为 if(b == true) 或简单的 if(b)

【讨论】:

以上是关于布尔语句不起作用? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

Powershell If then 语句不起作用。如何修正逻辑? [复制]

如果语句不起作用 - 如果该行中有特定值,则将各个行复制到不同的工作表

Angular2布尔输入参数不起作用

伊斯坦布尔忽略下一个在 JSX 和嵌套数组中不起作用

C#布尔值由事件设置不起作用

Windows服务中的布尔标志不起作用