在刚学习Java的过程中我们会遇到这么一个问题:求出1-100中偶数的和?
这也是一道经典的Java的面试题,对于上面的问题,新手肯定会想到for循环,但这里我给出三种解决方案,每种方案各有不同。
示例代码:
import java.util.stream.IntStream; public class Hello { public static void main(String[] args) { // 求出1-100中偶数的和 // 方案一:for循环 int sum = 0; for (int i = 1; i < 101; i++) { if (i % 2 == 0) { sum = sum + i; } } System.out.println(sum); // 方案二:while循环 int t = 1; int sum1 = 0; while (t < 101){ if (t % 2 == 0){ sum1 += t; } t += 1; } System.out.println(sum1); // 方案三:lambda表达式 long count = IntStream.rangeClosed(1,100)//生成[1,100]数字 .filter(a -> a % 2 == 0)//过滤出偶数 .sum();//求和 System.out.println(count); } }
运行结果:
2550 2550 2550
解释一下方案三:首先声明一个IntStream数值流,在通过rangeClosed(1,100)方法生成1到100的数字,然后对这些数字进行过滤,通过取模运算来过滤出偶数,最后通过sum求和,将所有的偶数求和赋值给count。
题目虽然很简单,但方案三的代码写的很新颖,简洁,生动,活泼,有内涵。