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

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

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

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

Q&A

解決済

2回答

13259閲覧

なぜこのようなエラーが出るのかわかりません…

sui81_01

総合スコア13

Java

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

0グッド

0クリップ

投稿2016/09/21 02:22

以下のコードを実行すると次のようなエラーが出ます。

import java.io.BufferedReader; import java.io.InputStreamReader; public class Main { public static void main(String[] args) throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String line = br.readLine(); //処理をカウント int cnt = 0; int paramNum = 0; int usrNum = 0; int rankNum = 0; float keisu[] = null; int rank[]; while(line != null){ //一行ずつ読み取る line = br.readLine(); if(cnt == 0){ //1行目(期待される値 3 41 5) //文字を分割 String[] temp = line.split(" ", 0); paramNum = Integer.parseInt(temp[0]); usrNum = Integer.parseInt(temp[1]); rankNum = Integer.parseInt(temp[2]); rank = new int[rankNum]; }else if(cnt == 1){ //2行目(期待される値 1.5 1.2 0.2) keisu = new float[paramNum]; String[] temp2 = line.split(" ", 0); for(int i=0; i <= paramNum;i++){ keisu[i] = Float.parseFloat(temp2[i]); } }else{ //3行目以降(期待される値 621 641 100) int item[] = new int[paramNum]; int score = 0; String[] temp3 = line.split(" ", 0); for(int i=0; i <= paramNum;i++){ item[i] = Integer.parseInt(temp3[i]); score += item[i] * keisu[i]; } System.out.println(String.valueOf(score)); } cnt++; } br.close(); } }

実行すると次のようなエラーが出ます。
Exception in thread "main" java.lang.NumberFormatException: For input string: "1.5"

javaを初めて間もないため、調べてみたのですが改善点が分かりません
どなたかご教授願えないでしょうか
よろしくお願い致します。

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

moonphase

2016/09/21 02:26

何行目で出ていますか?エラーの全てを記載してください。
guest

回答2

0

ベストアンサー

最初にlineを宣言したときにbr.readLine()しています。ここで"3 41 5"を読み飛ばしています。
whileに入ってbr.readLine()によりlineが2行目の"1.5 1.2 0.2"になります。cntが0のままifに入るため、これを分割しparseIntしようとします。もちろん小数を整数に解析できないので、NumberFormatExceptionになります。

対策としては、最初にlineを宣言する際に""(空文字)で初期化するといいでしょう。

投稿2016/09/21 02:30

編集2016/09/21 03:06
swordone

総合スコア20651

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sui81_01

2016/09/21 04:46

ご回答いただきありがとうございます! 無事解決致しました!
guest

0

28行目のparamNum = Integer.parseInt(temp[0]);1.5という文字列を渡しているためです。
parseIntに小数点が入っていると例外java.lang.NumberFormatExceptionをスローします。

投稿2016/09/21 02:29

moonphase

総合スコア6621

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sui81_01

2016/09/21 04:46

ご回答いただきありがとうございます! 無事解決致しました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問