11
11

More than 3 years have passed since last update.

【Java】String型の配列をInt型に変える

Last updated at Posted at 2020-12-04

String型の配列をInt型に変える

一言まとめ

Java8以降では、Stream APIを使って一行でできる。

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

//String型配列 を int型配列 に変換
int[] int型の配列名 = Stream.of(整数型の配列名).mapToInt(Integer::parseInt).toArray();

【説明】

流れとしては

  1. Stream APIをインポート
  2. 文字列型の配列を作成
  3. String型配列 を int型配列 に変換

【メリット】

Java7までの場合は「for文で要素を一つずつ数値型に変換していく」といった書き方だったらしいのですが、Java8からAPIでかなりスッキリ書くことができるようになったらしい。

// java7までの書き方
for (int i = 0; i < sa.length; i++) {
    ia[i] = Integer.parseInt(sa[i]);
}

【使用場面】

体感paizaの問題を解く際は、かなり頻出する操作だと感じました。例えば以下のようなパターンで私はつまりました。

  1. scanner で「100,200,300」のように区切って入力
  2. 入力の内容を一度 文字列の配列 として分割する
  3. 2 をint型の配列 に変換して計算をおこなう

といった感じでした。
以下にその例のサンプルコードを載せておきます。

【サンプルコード】 「scannerで打ち込まれた文字列の配列を数値型に変換」

【Main.java】

// scannerのインポート
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();

//【START】配列の中身を全部出力する ==============
//        for (int i = 0; i < intArray.length; i++) {
//            int j = intArray[i];
//            System.out.println(j);
//        }
//【 END 】配列の中身を全部出力する ==============

// 【START】配列内の値をすべて足す =============
//        int sum = 0;
//        for (int i = 0; i < intArray.length; i++) {
//            sum += intArray[i];
//            System.out.println(sum);
//        }
// 【 END 】配列内の値をすべて足す ==============

    }
}

こちらのコード内コメントアウトでint化した配列をつかって色々出力してみました。

配列の中身を全部出力する

[ 拡張for文]を用いて配列内の要素をすべて出力します
こちらのコメントアウトを開放してください。

//【START】配列の中身を全部出力する ==============
        for (int i : intArray) {
            System.out.println(i);
        }
//【 END 】配列の中身を全部出力する ==============

ターミナルに以下を入力する

100 200 300

【実行結果】

100
200
300

配列内の値をすべて足す

こちらのコメントアウトを開放してください。

// 【START】配列内の値をすべて足す =============
        int sum = 0;
        for (int i = 0; i < intArray.length; i++) {
            sum += intArray[i];
            System.out.println(sum);
        }
// 【 END 】配列内の値をすべて足す ==============

ターミナルに以下を入力する

100 200 300

【実行結果】

100
300
600

【まとめ】

paiza問題を解くには今だとラムダ式とか、Listとか使うのが必須になるのかなーと思いますが、今後も更新していきます。

参考文献・記事

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