Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
必须编写一个程序,在不使用if语句、循环或数组的情况下为我提供偶数之和,在java中该如何做到这一点?_Java - Fatal编程技术网

必须编写一个程序,在不使用if语句、循环或数组的情况下为我提供偶数之和,在java中该如何做到这一点?

必须编写一个程序,在不使用if语句、循环或数组的情况下为我提供偶数之和,在java中该如何做到这一点?,java,Java,我想写一个程序,让用户输入3个整数num1,num2,num3,然后给我输入的偶数和偶数的平均值,而不使用if语句/循环/数组。我被卡住了。你可以使用streams和filter() int num1 = 2, num2 = 3, num3 = 4; int sum = IntStream.of(num1, num2, num3).filter(x -> x % 2 == 0).sum(); double count = IntStream.of(num1, num2, num3).fil

我想写一个程序,让用户输入3个整数num1,num2,num3,然后给我输入的偶数和偶数的平均值,而不使用if语句/循环/数组。我被卡住了。你可以使用streams和
filter()

int num1 = 2, num2 = 3, num3 = 4;
int sum = IntStream.of(num1, num2, num3).filter(x -> x % 2 == 0).sum();
double count = IntStream.of(num1, num2, num3).filter(x -> x % 2 == 0).count();
System.out.printf("sum of evens is %d and the average is %.2f%n", sum, sum / count);
或者一系列三元操作,比如

int sum = (num1 % 2 == 0 ? num1 : 0) 
        + (num2 % 2 == 0 ? num2 : 0) + (num3 % 2 == 0 ? num3 : 0);
double count = (num1 % 2 == 0 ? 1 : 0) 
        + (num2 % 2 == 0 ? 1 : 0) + (num3 % 2 == 0 ? 1 : 0);

IntStream.of(num1、num2、num3).filter(num->num%2==0).sum()

不使用任何条件语句、
if
else
、三元函数或任何库函数

如果是奇数,以下操作将把
num1
转换为零。但是如果它是偶数,它将保持值不变

num1 = num1 - num1*(num1 % 2);  
你看到了吗?它利用模运算符num1%2
将数字转换为零或一

对num2和num3应用相同的操作:

num2 = num2 - num2*(num2 % 2);
num3 = num3 - num3*(num3 % 2);
然后添加调整后的值:

sumOfEvens = num1 + num2 + num3;
更新:

上面的公式不处理负数,因为
(-1)%2
是-1而不是
1
,但这里有一个关于如何解决此问题的提示:

int isNegative = (num1 >> 31) & 0x01;
num1
为正时,
isNegative
将为零。当它为负时,它将是1


其余部分留给您作为练习。

使用streams?三元运算符。如果找到答案,请不要忘记向上投票和/或接受helpful@ErikMacias-我还更新了我的答案,以解决负数问题。