paiza.jpの話【Java標準入力解決】


paiza.jpでの標準入力 Java編

内容としては前回(Python編)のJava編です。
感想としてはPythonのほうが簡潔で好きです。あとで型が勝手に決まるありがたさをまざまざと感じることになりました。
以下のコードはpublic...などは省略しているので、メイン部分しか記載していません。

一番原始的な処理

"input"という変数を作成し、代入する作業自体は".nextLine()"でしている。

simple.java

//入力データが以下だったとする
//5

Scanner input = new Scanner(System.in);//入力値が入ってくる変数を定義

//取得は

String l = input.nextLine();//文字列として取得

//もしくは

int l = input.nextInt();//整数として取得

Pythonが l=input() で終わってしまうだけに、かなりもたもたしている印象を受けてしまう…

横に連なっている場合(1つずつ取得)

yoko1.java

//入力データが以下だったとする
//5 10 15

Scanner input = new Scanner(System.in);//入力値が入ってくる変数を定義

String l = input.next();//文字列として取得

//もしくは

int l = input.next();//整数として取得

1つだけ取得するならわりと簡単。むしろ1つ上のもこれでいい気がする。

横に連なっている場合(Listとして取得)

yoko2.java

//入力データが以下だったとする
//5 10 15

Scanner input = new Scanner(System.in);//入力値が入ってくる変数を定義

List<String> l = Arrays.asList(input.nextLine().split(" "));
//文字列として取得。split("")とすると1文字ずつ取れるから応用できそう。

//もしくは

???//整数として取得

可変リストを活用。リスト1つとっても手間がすごい…。整数は未検証です。(追記予定)Listでいけそうな気もする(未検証)。

縦に連なっている場合⇒追記します

番外編:一番原始的な処理(まとめてみた)

simple.java
//入力データが以下だったとする
//5

String l = new Scanner(System.in).nextLine();

//1つだけデータを取り出すならこれだけ。l=5となる。

本当に1つだけデータを取り出すのならこれでも読み取ることはできる。同じ構文を重ねるとエラーが出てしまうので、paizaのスキルチェックなどにはあまり活用できなさそう。

参照

[Java 8]コーディングテストで使える標準入力をリストまたは配列に変換するまで