前提・実現したいこと
標準入力から累積和を表示するプログラムをstream apiを用いて書きたいです。
以下のfor文の部分をstream apiで書きなおしてください。
(1 2 3 4 5と入力されたら 0 1 3 6 10 15と出したい)
for文で書いたプログラム
Scanner sc = new Scanner(System.in); ArrayList<Integer> numbers = new ArrayList<>(); ArrayList<Integer> volumes = new ArrayList<>(); int volume =0; volumes.add(volume); //標準入力をlistに入れる for(int i =0;i<N;i++){ numbers.add(sc.nextInt()); } //一つ目のlistから累積和のlistを作る for(int j =0;j<N;j++){ volume += numbers.get(j); volumes.add(volume); } //表示する for(int k =0;k<volumes.size();k++){ System.out.println(volumes.get(k)); }
試したこと
入力された値をIntStreamにするところまで(一つ目のfor文)
BufferedReader br = new BufferedReader( new InputStreamReader(System.in)); IntStream i_stream = br.lines() .mapToInt(el->Integer.parseInt(el));
flatMapToInt こっちじゃないのか
ちなみにそれ IntStream じゃなく Stream<Integer> じゃね(別物)
多分mapToIntでもIntStreamが帰ってくると思います。
なら大丈夫か
> asahina1979 flatMapToIntは要素を受けてIntStreamを返す関数を渡して、結果の要素全部をつなげたIntStreamにするメソッドです。mapならStream<Integer>になり、mapToIntでIntStreamになります
ho_hoさんは「0 1 3 ...」というStream/Collectionに変換するのが目的であって印字するのが目的ではないのですよね?
回答3件
あなたの回答
tips
プレビュー