这可以转换为IntStream吗?

时间:2017-09-02 04:38:23

标签: java

以下while循环可以转换为IntStream吗?

此处modifiedNumberint。我想将它重构为java8。

while (modifiedNumber > 0) {
    tempNumber = (int) ((modifiedNumber % 10) * Math.pow(10, count));
    alist.add(tempNumber);
    modifiedNumber = modifiedNumber / 10;
    count++;
}

2 个答案:

答案 0 :(得分:0)

嗯,不太确定用于代码共享中使用的变量的声明,但是要将上面的代码转换为使用IntStream,你可以尝试类似(声明我的):

final int[] modifiedNumber = {123};
final int len = String.valueOf(modifiedNumber[0]).length();
ArrayList<Integer> aList = new ArrayList<>();
final int[] count = {0};
IntStream.range(0,len).forEach(mn -> {
    double pow = Math.pow(10, count[0]);
    int tempNumber = (int) ((modifiedNumber[0] % 10) * pow);
    aList.add(tempNumber);
    modifiedNumber[0] = modifiedNumber[0] / 10;
    count[0]++;
});

System.out.println(aList);

注意 :大多数整数值都会转换为最终的单值数组,以便在流中使用。

答案 1 :(得分:0)

这是一种可行的方法。您还可以将多个数字传递给 void print(int a) {while(a!=1) { printf("%d",a); a--; print(a); }} ,输出将是解析所有这些数字的流。

Stream.of()