【发布时间】:2015-10-21 16:07:44
【问题描述】:
我有两种类型的处理实现。不知道为什么流 forEach 循环抱怨变量“我”必须是最终的。但是如果是final,那么如何解决计算'i'的逻辑问题?
public static void main(String[] args) {
String str = "123456789";
int i = 0;
//Non Stream
for (char c : str.toCharArray()) {
if (c >= 48 && c <= 57) {
i = i * 10 + (c - 48);
}
}
System.out.println(i);
i = 0;
// WHY compiler fails for variable 'i' here?
str.chars().forEach((c) -> {
if (c >= 48 && c <= 57) {
i = i * 10 + (c - 48);
}
});
System.out.println(i);
}
【问题讨论】:
-
虽然数字常量的含义可以从上下文中推导出来,但没有理由使用
48和57代替'0'和'9'... -
关于字符 ascii 值替换的要点。
标签: java foreach java-8 java-stream