2016-12-31 15 views
3

最後のビットが1または0の場合、数値が偶数か奇数かをチェックするコードです。 最後のビットが1ならば、int型からboolean型への型の不一致エラーが発生しました

import java.util.Scanner; 

public class Even_or_odd { 
    public void Check_even_or_odd(int a) { 
     if(a&1)//error:Type mismatch: cannot convert from int to boolean 
      System.out.println("odd"); 
     else 
      System.out.println("even"); 
    } 
    public static void main(String[] args) { 
     System.out.println("enter a number to check even or odd"); 
     Scanner scan=new Scanner(System.in); 
     int a=scan.nextInt(); 
     scan.close(); 
     Even_or_odd e=new Even_or_odd(); 
     e.Check_even_or_odd(a); 
    } 
} 
+0

エランは、あなたがelloborateすることができます参照してください? &1 == 1を加えた後の –

+0

。比較の同一の表現が\t - - 基本的には、JavaはCとは違って、ブール値として数字を扱わない、演算子&は、引数の型はintには未定義である \tブール –

+0

をし、私はこのラインで複数のマーカー \tエラーが発生しました他にもいくつかの言語があります。 0または任意の数は、真でも偽でもありません。最終的には整数になる2つの整数に対して2項演算を行います。ブール値ではありません。 –

答えて

4

コードはa1に設定されている最下位の一つを除いてゼロに設定されたすべてのビットを有する1とのバイナリ表現を、マスキングすることによって/奇数であることをテストします。

1でマスクした場合、奇数は1を生成します。偶数はゼロを生成します。ただし、Javaのintからbooleanへの暗黙的な変換がないため、if (1)またはif (0)を記述することはできません。あなたはこの問題を解決するために

if ((a&1) != 0) 

を記述する必要があります。私はあなたがモジュロを使用して入力値をチェックし、やろうとしていると思うものです代わりに二項演算の

+0

ありがとう、それは問題を解決しました。 –

+0

しかし、なぜ私たちはif((a&1)!= 0)を書く必要があるのか​​理解しています。 –

+0

dasblinkenlightなので、あなたによれば(1)はjavaでもうまくいかないでしょうか? –

3

、:あなたはブール値を持っている必要がif文の条件ブロックで

if (a % 2 == 0) { 
    System.out.println("even"); 
} else { 
    System.out.println("odd"); 
} 

かブール値に評価される式。 a&1は整数に評価されます。

はまたCheck whether number is even or odd

+0

私は%opertaorを使用してプログラムを知っていますが、私はちょうどそれがエラーを投げていたとして、javaのビット演算子を使用して同じプログラムを強調したい。 –

関連する問題