0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

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

Last updated at Posted at 2021-09-09

初めに

前回は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]);
    }
}

終わり

0
0
0

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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?