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 氏の記事
入れた配列の出力や活用は氏の解説を参照。
以上。