質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

受付中

Java NumberFormatException の対処

Daniel1021
Daniel1021

総合スコア2

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

1回答

0評価

0クリップ

261閲覧

投稿2022/01/12 10:55

前提・実現したいこと

ここに質問の内容を詳しく書いてください。
Javaでテキストファイルを読み込んで、CSV形式に変換して書き込むシステムを作っています。
実装中に以下のエラーメッセージが発生しました。

発生している問題・エラーメッセージ

Exception in thread "main" java.lang.NumberFormatException: For input string: "20210001 男 静大太郎 3.583" at java.base/java.lang.NumberFormatException.forInputString(NumberFormatException.java:67) at java.base/java.lang.Integer.parseInt(Integer.java:660) at java.base/java.lang.Integer.parseInt(Integer.java:778) at Test6.main(Test6.java:32)

該当のソースコード

import java.io.FileNotFoundException; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.io.PrintWriter; import java.util.ArrayList; import java.util.List; import java.util.HashMap; import java.util.Map; import java.io.File; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.InputStreamReader; import java.io.FileInputStream; import java.util.Iterator; public class Test6 { public static void main(String[] args) { List<StudentTest6> data = new ArrayList<StudentTest6>(); Map<Integer, StudentTest6> map = new HashMap<>(); try{ File inFile = new File("/Users/shuitakanashi/Documents/二年後期/プログラミング/20211125.txt"); BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(inFile), "Shift-JIS")); String line; while((line = br.readLine()) != null) { int lines = 0; String[] split = line.split("¥t"); int id = Integer.parseInt(split[0]); String sex = split[1]; String name = split[2]; float gpa = Float.parseFloat(split[3]); StudentTest6 student = new StudentTest6(id, sex, name, gpa); data.add(student); map.put(lines, student); lines++; } } catch(FileNotFoundException e) { System.out.println(e); } catch(IOException e) { System.out.println(e); } catch(NumberFormatException e) { System.out.println(e); } try{ File outFile = new File("/Users/shuitakanashi/Documents/二年後期/プログラミング/Test6.csv"); PrintWriter pw = new PrintWriter(new BufferedWriter(new FileWriter(outFile))); //Iterator<Integer> itMapKey = map.keySet().iterator(); Iterator<StudentTest6> itMapValue = map.values().iterator(); //Iterator<Map.Entry<Integer, StudentTest6>> itEntry = map.entrySet().iterator(); while (itMapValue.hasNext()) { StudentTest6 student = itMapValue.next(); pw.write(student.getFirstName() + "さん," + student.getGpa()); System.out.println(student.getFirstName() + "さん," + student.getGpa()); } } catch(IOException e) { System.out.println(e); } } }

試したこと

Integer.parseIntやFloat.parseFloatを使っても解決しませんでした。

補足情報(FW/ツールのバージョンなど)

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

javahack

2022/01/12 11:50

エラーメッセージを見るとカラム毎の分割が出来ていないようです。 String[] split = line.split("¥t"); の後に System.out.println(split[0]); 等で意図した値が入っているか確認してはどうでしょうか?

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。