[Java基礎⑥]配列 複数行を配列に格納/配列をランダム出力 split・hasNextLineメソッド


初めに

前回はJavaの基本的な配列を学習しましたが、
今回は応用編です。
決まった文字で区切って配列に格納する split と、
複数行を読み込むhasNextLineメソッドを学習しました。

split カンマで分割して配列に格納する

import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String data = sc.nextLine();
        String[] array = data.split(",");
        System.out.println(array[0]);
    }
}

標準入力で、「ごはん,おかか,梅干し」と打つと、「ごはん」が出力されます。

以下を追記すると、配列の中身を一つずつ出力できます。

配列の中身を取り出す

for (String lunch : array){
System.out.println(lunch + "を食べた");
}

複数行データ→配列に格納

まずは複数行のデータを読み込む

import java.util.*;
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
       //行データがある間繰り返すという記述
        while (sc.hasNextLine()) {
            String data = sc.nextLine();
            System.out.println(data);
        }
    }
}

このように書けば、行を増やしても増やしても表示されます。
hasNextLine()メソッドは、
入力されてる行がまだあるかどうかを確認するメソッドです。

配列に格納し、拡張for文で出力

import java.util.*;
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
//データの数がわからないのでArrayListを用意する
        ArrayList<String> array = new ArrayList<String>();

        while (sc.hasNextLine()) {
//データが存在する間、dataに格納する
            String data = sc.nextLine();
//dataをarrayにaddする = 配列に格納する
            array.add(data);
        }
//ここからは拡張for文の出番。
        for(String str : array) {
            System.out.println(str);
        }
    }
}

難:カンマ区切りの複数行データを配列に格納し出力

カンマ区切りのデータが複数行あり、
「りんごを5個買った」「レモンを3個買った」というように出力したい。

標準入力の内容
りんご,5
レモン,3
メロン,5

import java.util.*;
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
//行がある限り処理を繰り返す
        while (sc.hasNextLine()) {
            String line = sc.nextLine();
            String[] fruit = line.split(",");
            System.out.println(fruit[0] + "を" + fruit[1] + "個買った");
        }
    }
}

難 配列の中身をランダムで出力

以下はじゃんけんプログラムです。
グー,チョキ,パー という標準入力からランダムに出力します。

import java.util.*;
public class Main {
    public static void main(String[] args) {
        // 標準入力から1行取得 グー,チョキ,パー
        Scanner sc = new Scanner(System.in);
        String data = sc.nextLine();
        String[] array = data.split(",");
// rand変数に、配列の長さの数字をランダムに入れる
        double rand = Math.random()*array.length;
//num変数にint型にしたrandを入れる
        int num = (int)rand;
// ランダムに選んだ配列の要素を出力
        System.out.println(array[num]);
    }
}

終わり