2

以下のコードは、2つの配列を取り込んで、それらを比較しています。両方が同じ場合は正しいメッセージが表示されますが、falseの場合は両方のメッセージが表示されます。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");
  } 
}
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

ええと、btrueと比較するのではなく、ifステートメントが実行される前に設定します。

ifステートメントをいずれかif(b == true)または単にに変更しますif(b)

于 2013-02-15T17:21:17.123 に答える