如何使用java中的方法使用位运算符?

如何使用java中的方法使用位运算符?,java,methods,Java,Methods,我有一个家庭作业,我必须在方法中使用位运算符。我需要为每个操作符使用方法。接口位运算符是我需要使用的给定值。我能够做到这一点而不使用方法,但这是我必须使用的方法。这是我的东西,但它不起作用。我对这些方法相当陌生,所以我不知道该怎么办 import java.util.Scanner; public class TestBitOperators { public static interface BitOperators { BitOperators and(byte a, byte b);

我有一个家庭作业,我必须在方法中使用位运算符。我需要为每个操作符使用方法。接口位运算符是我需要使用的给定值。我能够做到这一点而不使用方法,但这是我必须使用的方法。这是我的东西,但它不起作用。我对这些方法相当陌生,所以我不知道该怎么办

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;
}
}
import java.util.Scanner;
公共类TestBitOperators{
公共静态接口位运算符{
位运算符和(字节a、字节b);
位运算符或(字节a、字节b);
位异或运算符(字节a、字节b);
位运算符移位(字节n、字节l、字节r);
位运算符comp(字节n);
}
静态int和;
静态int或;
静态int-xor;
公共静态void main(字符串[]args){
字节a;
字节b;
字节l;
字节r;
最终字节出口=-1;
扫描仪标准输入=新扫描仪(System.in);
做{
System.out.println(“在列表中输入a和b编号”
+“间隔[-128127](-1-1退出):”;
a=stdin.nextByte();
b=stdin.nextByte();
}
如果(a==退出&&b==退出){
打破
}
System.out.println(“在间隔[0,8]:”中输入#左移位位);
l=stdin.nextByte();
System.out.println(“在间隔[0,8]:”中输入#右移位);
r=stdin.nextByte();
}
系统输出打印项次(a+”或“+b+”为“+和”;
系统输出打印项次(a+”或“+b+”为“+或”;
System.out.println(a+“XOR”+b+“是”+XOR);
System.out.println(a+“左移”+a+“是”+(a>r));
System.out.println(a+“无符号右移”+a+
“是”+(a>>>r));
System.out.println(a+“补码”+(~a));
}
而((aabMIN&&b>abMIN));
}
公共静态int和(字节a,字节b){
和=a&b;
返回和返回;
}
公共静态int或(字节a、字节b){
或=a | b;
返回或返回;
}
公共静态整数异或(字节a,字节b){
xor=a^b;
返回异或;
}
}

您编写了执行位运算符的正确方法,但似乎没有使用它们:

您应该调用已创建的方法,而不是访问静态变量:

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));

有用的链接:

您似乎从未调用过您的方法。您可以执行类似于
System.out.println(a+”或“+b+”是“+或(a,b))
在方法中,您引用的是静态变量。应将其更改为局部变量,或完全消除变量。对于
,您应该只执行
返回a&b。其他的也一样,不需要将结果存储在临时文件中。