今回は、何行あるか分からない入力を 最後まで 読むやり方と、
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);
}
}
ここで覚えておくこと
カンマ区切りの1行は、splitすると バラバラの部品(パーツ) になるよ!
parts[0] → 1個目のパーツ
parts[1] → 2個目のパーツ
parts[2] → 3個目のパーツ
つまり 配列に入るから“順番で取り出せる” ってこと。
ここを理解できると CSV 読み込みが一気にラクになるよ〜!
2. 次はCSVファイルをまるっと読むよ!
1行を処理できたら、あとは “それを毎行回すだけ”。
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);
}
}
}
ここで覚えておくこと
while (sc.hasNextLine()) は
「まだ次の行ある〜??」って Scanner に聞くイメージ!
行がなくなるまで、ずっとぐるぐる回り続けるよ。
エラーチェックを入れることも忘れずに!!
今のままだと、次の場合エラーになるよ!
① file内に何も値がない場合
② 書き方が間違っている場合
(例:今回の場合はname,level,typeが、name,levelみたいになっているなど)
あとがき
ここまで読んでくれて、本当にありがとうございました。
「プログラミングって難しい...」って思ってた人も、
「ちょっと楽しいかも...!」って思ってもらえたらうれしいな。
次の投稿も、よろしくおねがいします。
💬 コメント・フィードバック歓迎!
「この章わかりやすかった!」
「これ表現まちがってない?」
「次は○○をやってほしい!」などなど、
お気軽にコメントで教えてくださいね!

