2017-02-28 22 views
0

私はこの方法でビットワイズ演算子を使用しなければならない宿題を割り当てています。私は各演算子のためのメソッドを使用する必要があります。インタフェースBitOperatorsは私が使用する必要があるものです。私はメソッドを使わずにこれを行うことができましたが、メソッドを使用する必要があります。ここに私が持っているものがありますが、それは働いていません。私はメソッドにかなり新しいので、私は何をすべきかわかりません。javaのメソッドを使用してビットワイズ演算子を使用する方法?

import java.util.Scanner; 
public class TestBitOperators { 

public static interface BitOperators { 
    BitOperators and(byte a, byte b); 
    BitOperators or(byte a, byte b); 
    BitOperators xor(byte a, byte b); 
    BitOperators shift(byte n, byte l, byte r); 
    BitOperators comp(byte n); 
} 
static int and; 
static int or; 
static int xor; 

public static void main(String[] args) { 

    byte a; 
    byte b; 
    byte l; 
    byte r; 
    final byte EXIT = -1; 

    Scanner stdin = new Scanner(System.in); 
    do{ 
    System.out.println("Enter a and b numbers in the " 
      + "interval [-128,127] (-1 -1 to exit): "); 

    a = stdin.nextByte(); 
    b = stdin.nextByte(); 

    } 
    if(a == EXIT && b == EXIT){ 
     break; 
    } 

    System.out.println("Enter #left-shift bits in the interval [0,8]: "); 
    l = stdin.nextByte(); 

    System.out.println("Enter #right-shift bits in the interval [0,8]: "); 
    r = stdin.nextByte(); 

    } 

    System.out.println(a + " OR " + b + " is " + and); 
    System.out.println(a + " OR " + b + " is " + or); 
    System.out.println(a + " XOR " + b + " is " + xor); 
    System.out.println(a + " shifted left " + a + " is " + (a << l)); 
    System.out.println(a + " shifted right " + a + " is " + (a >> r)); 
    System.out.println(a + " unsigned-shifted right " + a + 
      " is " + (a >>> r)); 
    System.out.println(a + " COMPLEMENT " + (~a)); 
    } 
    while((a < abMAX && b < abMAX) && (a > abMIN && b > abMIN)); 
} 
public static int and(byte a, byte b){ 
    and = a&b; 
    return and; 
} 
public static int or(byte a, byte b){ 
    or = a|b; 
    return or; 
} 
public static int xor(byte a, byte b){ 
    xor = a^b; 
    return xor; 
} 
} 
+1

あなたはあなたのメソッドを呼び出すようには思われません。あなたは 'System.out.println(a +" OR "+ b +"は "+または(a、b))"; – Berger

+1

あなたのメソッドでは、静的変数を参照しています。これはローカル変数に変更するか、変数を完全に削除する必要があります。 'と'の場合、 'a&b;を返す 'だけを行うべきです。他の人と同じですが、結果を一時的に保存する必要はありません。 –

答えて

1

あなたはビット演算子を実行するための右の方法を書いていますが、それらを使用していないようだ。

System.out.println(a + " AND " + b + " is " + and(a, b)); 
System.out.println(a + " OR " + b + " is " + or(a, b)); 
System.out.println(a + " XOR " + b + " is " + xor(a, b)); 

便利なリンク:あなたはあなたがアクセスする静的変数ではなく、作成したメソッドを呼び出す必要があり

Bitwise and Bit Shift Operators

関連する問題