如何使用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代码>。其他的也一样,不需要将结果存储在临时文件中。