3
2

More than 1 year has passed since last update.

標準入力で受け取った文字列を数値配列化【Stream.of().mapToInt】

Last updated at Posted at 2022-02-28

Paizaのスキル問題に挑むためのコピペ

参考記事
私の初心者レベルでは一発理解が出来なかったので、私なりの解説をメモ代わりに記載しておく。

Paizaのスキルチェックはすべて標準入力

なのでまずは受け取って、配列に入れて、配列を数値化して、そうして初めて変数XだYだのに入れ込める。

@takahirocook 氏のコード

import java.util.Scanner;
//Stream APIのインポート
import java.util.stream.Stream;

public class Main {
    public static void main(String[] args) {
        // scannerのインスタンス化
        Scanner sc = new Scanner(System.in);

        // 空白区切りに文字型で要素ごとに配列に分割
        String[] stringArray = sc.nextLine().split(" ");
        // String型配列 を int型配列 に変換
        int[] intArray = Stream.of(stringArray).mapToInt(Integer::parseInt).toArray();

とあるが、肝心なところは2点ある。一つ一つ解説をしよう。

まずは配列への格納

        String[] stringArray = sc.nextLine().split(" ");

標準入力(Paizaの課題が入力してくる数値)が入っている変数SCに対してsplit() をあてることで配列化する。
課題によって区切りがカンマだったり半角スペースだったりするので問題文をよく読んで引数に入れよう。

そのままだと文字列配列なので数値配列にする

        int[] intArray = Stream.of(stringArray).mapToInt(Integer::parseInt).toArray();

私はこの段階で右辺のメソッドが一切わからなかった。APIで調べてもなんのこっちゃである。
順に調べてわかったことを書く(多分厳密に考えると指摘される箇所が多そう・・・)。

Stream.of()

for eachだったりfor(String a : b) の処理に近い。
of() の引数に入っている配列を順に取り出すというもの。
当然これには処理(メソッド)がないので次に続く。

mapToInt(クラス名::メソッド名)

入力したクラスに用意されたメソッドをStreamで指定した引数に実行するもの。
今回行いたい処理はIntegerクラスに用意されたparseInt() メソッドなのでmapToInt(Integer::parseInt) になる。

toArray()

左2つで生み出されたリストを配列化するメソッド。

配列に入れた後は

@takahirocook 氏の記事
入れた配列の出力や活用は氏の解説を参照。


以上。

3
2
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2