假设我有四个 variables x、y、z、w。我想打印:
"hello all non zero values" 仅当所有 x、y、z、w 均为非负且非零 values。
如果所有 values 都为零,则打印“hello zero”。
如果 values 中的任何一个(一个、两个或三个但不是全部)为零或负数,则打印“非法 values”。
我编写了一个示例解决方案,它处理和俱乐部负以及非负 values:
if((x&y&z&w) == 0 && !(x==y && y==z && z==w && w==0)) {
System.out.println("illegal values");
} else {
System.out.println("hello all non zero values");
}
但是,我无法分别处理负数和正数 values 。任何人都可以提出解决方案吗?
回答1
位摆弄方法:
String s;
int j = w & x & y & z;
int k = w | x | y | z;
if (k == 0)
s = "hello zero";
else if (j != 0 && k > 0)
s = "hello all non-zero values";
else
s = "illegal values";
System.out.println(s);
这是有效的,因为如果四个 values 中的任何一个为零,则按位与为零,如果四个 values 中的任何一个为非零,则按位或非零;如果在四个 values 中的任何一个中设置了符号位,则在结果中设置符号位(即负数)。
(而且我使用临时的's',因为为什么要对同一个例程写 3 个调用)
已编辑:此答案是在最近对该问题进行编辑后更新的,该问题澄清了标准。
回答2
以不同但等效的方式重新表述您的问题可能会有所帮助。如果它们都是零,则基本上打印“hello zero”,如果它们都是正数,则打印“hello all non zero values”,在所有其他情况下打印“illegal values”。
if (x == 0 && y == 0 && z == 0 && w == 0) {
System.out.println("hello zero");
} else if (x > 0 && y > 0 && z > 0 && w > 0) {
System.out.println("hello all non zero values");
} else {
System.out.println("illegal values");
}
回答3
像这样的东西?
if (x > 0 && y > 0 && z > 0 && w > 0) {
System.out.println("hello all non zero values");
} else if (x == 0 && y == 0 && z == 0 && w == 0) {
System.out.println("hello zero");
} else {
System.out.println("illegal values");
}
回答4
这对你有用吗?
if ((x>0)&(y>0)&(z>0)&(w>0)) {
System.out.println("hello all non zero values");
} else {
System.out.println("illegal values");
}
编辑:这并不能完全回答问题,我很抱歉