2

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

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");
  } 
}
4

3 回答 3

12

改变这个:

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

至:

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

或更好

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

您正在分配一个值而不是比较。

于 2013-02-15T17:19:09.480 回答
4

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

if (b = true){

应该

if (b ==true){

或者b简单的布尔值:

  if(b) {
于 2013-02-15T17:18:53.443 回答
1

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

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

于 2013-02-15T17:21:17.123 回答