java - 四个 values 为非零且非负数

假设我有四个 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");
}

编辑:这并不能完全回答问题,我很抱歉

相似文章

r - for-loop 有多个条件

我有一个大约有5000行的数据库,如果满足多个条件,我想以一种特殊的方式更改一列中的数据。如果条件不成立,value将保持不变。这是数据框的样子:>testdataABCDEFGrow11010501...

随机推荐

最新文章