【发布时间】:2021-04-09 15:29:07
【问题描述】:
我正在尝试在 Java 8 中编写以下 sn-p -
Scanner sc = new Scanner(System.in);
System.out.println("Enter the policy amount: ");
long amount = sc.nextInt();
System.out.println("Enter the interest: ");
int interest = sc.nextInt();
System.out.println("Enter the number of years: ");
int years = sc.nextInt();
sc.close();
for (int i = 1; i <= years; i++) {
result = nextYear + amount;
calculateInterest = result * interest / 100;
nextYear = result + calculateInterest;
}
return nextYear;
我需要 nextYear 值,所以尝试如下使用 IntStream
IntStream intStream = IntStream.rangeClosed(1, years);
intStream.forEach(num -> {
result = nextYear + amount;
calculateInterest = result * interest / 100;
nextYear = result + calculateInterest;
});
但是,不确定如何返回 nextYear 值。如何处理这个或者有没有其他方法可以做到这一点。请建议。谢谢。
【问题讨论】:
-
为什么需要一个 for 循环? surley必须有一个计算利息的公式。
-
你要计算compound interest吗?
-
以防万一不是计息,一般怎么办?请帮忙。
-
通常这是一个reduce操作。但也通常当你只有一个循环时你不会减少,而是当你打算将结果基于流的内容时。
-
Java 8(甚至 16)仍然允许
for循环......它们没有任何问题。如果代码可以用streams更好地表达(或用于娱乐/测试),我只会使用streams- 非常基于意见
标签: java lambda java-8 java-stream