必须编写一个程序,在不使用if语句、循环或数组的情况下为我提供偶数之和,在java中该如何做到这一点?
我想写一个程序,让用户输入3个整数num1,num2,num3,然后给我输入的偶数和偶数的平均值,而不使用if语句/循环/数组。我被卡住了。你可以使用streams和必须编写一个程序,在不使用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
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-我还更新了我的答案,以解决负数问题。