- 締切済み
Java trimの設定について
Java trimの設定についてお伺いいたします。 最高気温と最低気温を表示することができずに困っております。trimをどのように設定すれば良いかご教授お願いします。 以下、ソースを記載します。 import java.io.*; public class Sample { public static void main(String[] args) { try{ BufferedReader br = new BufferedReader(new FileReader("kion.txt")); System.out.println("気温データ出力"); int test[] = new int[4]; String str; for(int i=0;i<test.length;i++){ str = br.readLine(); } int max = 0; int min = 0; for(int i=0;i<test.length;i++){ if(max < test[i]) max = test[i]; if(min > test[i]) min = test[i]; System.out.println(test[i]); } System.out.println("最高気温" + max + "です。"); System.out.println("最低気温" + min + "です。"); br.close(); } catch(IOException e){ System.out.println("入出力エラーです"); } } } また「kion.txt]は 東京 30.2 18.5 神奈川 34.2 18.5 埼玉 29.8 16.4 千葉 27.5 14.7 と作成しました。 これを 最高気温 神奈川 34.2 最低気温 千葉 14.7 と表示したいのですが、現在は「0 0 0 0」と表示するだけです。 何卒、よろしくお願い致します。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- ProKaseifu
- ベストアンサー率51% (98/192)
>Java trimの設定についてお伺いいたします。 >最高気温と最低気温を表示することができずに困っております。trimをどのように設定すれば良いかご教授お願いします。 >以下、ソースを記載します。 trimの何を質問したいのでしょうか? splitかなにかと勘違いでしょうか・・・
- osumitan
- ベストアンサー率33% (102/307)
そうなるでしょうね。 readLineでファイルを読み込むループではstrに読み込み結果を代入していますが、 それを使う処理のないままループしているのでstrが上書きされるだけです。 test変数への代入をしていないので、配列宣言時の初期値であるゼロが表示されています。 ちょっと手直ししてみました。どうでしょうか。 -------- import java.io.*; public class Sample { public static void main(String[] args) { try { BufferedReader br = new BufferedReader(new FileReader("kion.txt")); System.out.println("気温データ出力"); int COUNT = 4; String pref[] = new String[COUNT]; double high[] = new double[COUNT]; double low[] = new double[COUNT]; for(int i = 0 ; i < COUNT ; i++) { String[] str = br.readLine().split(" "); pref[i] = str[0]; high[i] = Double.parseDouble(str[1]); low[i] = Double.parseDouble(str[2]); } String maxPref = ""; double maxTemp = Double.NaN; String minPref = ""; double minTemp = Double.NaN; for(int i = 0 ; i < COUNT ; i++) { if(maxTemp < high[i] || Double.isNaN(maxTemp)) { maxTemp = high[i]; maxPref = pref[i]; } if(minTemp > low[i] || Double.isNaN(minTemp)) { minTemp = low[i]; minPref = pref[i]; } } System.out.println("最高気温 " + maxPref + " " + maxTemp + " です。"); System.out.println("最低気温 " + minPref + " " + minTemp + " です。"); br.close(); } catch(IOException e) { System.out.println("入出力エラーです"); } } }
お礼
ご返信、ご助言有難う御座いました。 ご助言頂いたソースでNumberformatExceptionエラーが改善されるよう取り組んでいる状況です。 ご助言を元に再度作成したものを、ProKaseifuさんのお礼返信にソースを記載させて頂きました。 有難う御座いました。
お礼
ご返信、ご助言有難う御座いました。 また、説明足らずで申し訳ないです。 以下、その後ご助言の元再作成し、完成したソースを記載致します。 有難う御座いました。 import java.io.*; public class Sample { public static void main(String[] args) { try{ BufferedReader br = new BufferedReader(new FileReader("kion.txt")); System.out.println("気温データ出力"); int test[] = new int[4]; String str; String max_kion; String min_kion; String max_chimei = ""; String min_chimei = ""; float max,min; float top_max = 0; float top_min = 999.9F; while(true){ str = br.readLine(); if(str == null); break; } chimei = str.substring(0,5); chimei = str.substring(5,9); chimei = str.substring(9,13); max = Float.parseFloat(max_kion); min = Float.parseFloat(min_kion); System.out.println(chimei + " " + max_kion + " " + min_kion); if(max > top_max){ top_max = max; max_chimei = chimei; } if(min < top_min){ top_min = min; min_chimei = chimei; } System.out.println("最高気温" + max_chimei + " " + top_max); System.out.println("最低気温" + min_chimei + " " + top_min); br.close(); } catch(IOException e){ System.out.println("入出力エラーです"); } } }