1
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?

【ポケモン×Java】知識編 Scanner#5 〜複数行/カンマ区切りを読み取る〜

Last updated at Posted at 2025-11-23

今回は、何行あるか分からない入力最後まで 読むやり方と、
1行の中をカンマ区切りで分ける 基本ワザをご紹介!!

目標:csvファイルに入力した内容を一気に読み取れるようにするよ!

1. まずは1行だけカンマ区切りをバラしてみよ〜!

いきなりCSV全部読むより、まずは「1行」をどう扱うかを
ハッキリさせちゃったほうが絶対わかりやすいよ。

入力イメージ

Pikachu,25,でんき

これを分解して、

  • name → Pikachu
  • level → 25
  • type → でんき
    みたいに取り出すだけ。まずはここを押さえる!

サンプルコード(1行を分解する)

package jp.co.demo3;

import java.util.Scanner;

public class LineParseSample {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        System.out.println("name,level,type の形式で入力してね〜:");
        String line = sc.nextLine().trim();
        
        String[] parts = line.split(",\\s*");        
        String name = parts[0];
        String level = parts[1];
        String type = parts[2];

        System.out.printf("name=%s level=%s type=%s%n", name, level, type);
    }
}

image.png

ここで覚えておくこと
カンマ区切りの1行は、splitすると バラバラの部品(パーツ) になるよ!

parts[0] → 1個目のパーツ
parts[1] → 2個目のパーツ
parts[2] → 3個目のパーツ

つまり 配列に入るから“順番で取り出せる” ってこと。
ここを理解できると CSV 読み込みが一気にラクになるよ〜!

2. 次はCSVファイルをまるっと読むよ!

1行を処理できたら、あとは “それを毎行回すだけ”。

CSVの例

pokedex.csv
Pikachu,25,でんき
Fushigidane,12,くさ
Zenigame,10,みず

ファイルを読み込むコード

package jp.co.demo3;

import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;

public class CSVReaderSample {

    public static void main(String[] args) throws FileNotFoundException {
        File file = new File("src/jp/co/demo3/pokedex.csv");
        Scanner sc = new Scanner(file);

        while (sc.hasNextLine()) {
            String line = sc.nextLine().trim();
            if (line.isEmpty()) continue;

            String[] parts = line.split(",\\s*");

            String name  = parts[0];
            String level = parts[1];
            String type  = parts[2];

            System.out.printf("name=%s level=%s type=%s%n",name, level, type);
        }
    }
}

image.png

ここで覚えておくこと
while (sc.hasNextLine()) は
「まだ次の行ある〜??」って Scanner に聞くイメージ!

行がなくなるまで、ずっとぐるぐる回り続けるよ。

エラーチェックを入れることも忘れずに!!

今のままだと、次の場合エラーになるよ!
① file内に何も値がない場合
② 書き方が間違っている場合
(例:今回の場合はname,level,typeが、name,levelみたいになっているなど)


あとがき

ここまで読んでくれて、本当にありがとうございました。

「プログラミングって難しい...」って思ってた人も、
「ちょっと楽しいかも...!」って思ってもらえたらうれしいな。

次の投稿も、よろしくおねがいします。

💬 コメント・フィードバック歓迎!

「この章わかりやすかった!」
「これ表現まちがってない?」
「次は○○をやってほしい!」などなど、
お気軽にコメントで教えてくださいね!


1
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
1
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?