【问题标题】: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,将您的代码编辑恢复到以前的版本,否则以下所有答案都将失效:)
  • 我回滚了最后的更改,因为它的编辑使问题变得毫无意义

标签: java loops boolean


【解决方案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)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-07-02
      • 2013-10-21
      • 2018-07-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多