前提・実現したいこと
ご覧いただきありがとうございます。Javaの学習をはじめて日が浅いのでご助力頂けると幸いです。
Javaで以下のようなtxtファイルの内容を読み込んで、変数に格納しようとしています。
user1 40 0
user2 20
user3 10 1
左からuser名、年齢、性別(0:男性 1:女性)を表しており、user2さんは性別の登録がされていないとします。このように値に欠落があると、以下のようなエラーが出てしまいます。
発生している問題・エラーメッセージ
エラーメッセージ java.util.NoSuchElementException ### 該当のソースコード at java.base/java.util.StringTokenizer.nextToken(StringTokenizer.java:349) at finalpractice.UserInfo.main(UserInfo.java:44) ```ここに言語名を入力 ソースコード package finalpractice; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.FileReader; import java.io.FileWriter; import java.io.PrintWriter; import java.util.ArrayList; import java.util.List; import java.util.StringTokenizer; public class UserInfo { private String name; private int age; private int sex; //0:男 1:女 public UserInfo(String name, int age, int sex) { this.name = name; this.age = age; this.sex = sex; } public String getName() { return name; } public int getAge() { return age; } public int getSex() { return sex; } public static void main(String[] args) { List<UserInfo> userList = new ArrayList<>(); File f = new File("user.txt"); File g = new File("output.txt"); try { BufferedReader br = new BufferedReader(new FileReader(f)); PrintWriter pw = new PrintWriter(new BufferedWriter(new FileWriter(g))); String line; while (null != (line = br.readLine())) { StringTokenizer st = new StringTokenizer(line); while (st.hasMoreTokens()) { UserInfo user = new UserInfo(st.nextToken(), Integer.parseInt(st.nextToken()), Integer.parseInt(st.nextToken())); userList.add(user); } for (UserInfo user : userList) { System.out.println(user.getName()); System.out.println(user.getAge()); System.out.println(user.getSex()); } } br.close(); pw.close(); } catch (Exception e) { e.printStackTrace(); } } } ### 試したこと ここに問題に対して試したことを記載してください。 値の欠落のないtxtファイルを読み込んだ場合うまくいきました。 ### 補足情報 StringTokenizerは非推奨らしいので、splitを使用したほうが良いのでしょうか…?