前置き
暑すぎる毎日たまーに風が吹くと天に向かって感謝します。
今回は前回の続きで読み込んだデータから最高気温を記録した日付と最高気温をコンソール出力してみました!
※JavaGoldの資格範囲からちょっぴり脱線します。
取得したデータを再確認
取得方法は前回投稿した通りです。
1~6行目までは列名など不要なデータです。
今回はデータの中で名古屋に絞って最高気温を記録した日を出力してみました。
「え、岡崎もやれよって?」
「すいません、忙しいからさぼりました(´;ω;`)」
プログラム
前回から特に変わったことはしていません。
今頭の中にある知識だけでソース組んでみました。
「きっと世の中にはもっとティピカルな方法があるんだろうなー...」
(最近、会社のすごい人がティピカルってよく使うから使ってみた笑)
public class Main {
public static void main(String[] args) throws Exception {
String maxDate = ""; //最高気温を記録した日付
String maxTemperature = ""; //最高気温
int i = 0; //読み込み行数
//csvファイルを読み込む
FileInputStream fis = new FileInputStream("C:\\Users\\user\\Documents\\study\\data.csv");
try {
String line; //1行分のデータを保持
//Shit-JISで読み込む
try (BufferedReader b_reader = new BufferedReader(new InputStreamReader(fis, "Shift-JIS"))) {
//lineに読み込んだ1行分のデータをセット。次に読み込んだ行がnullになるまでループ
while ((line = b_reader.readLine()) != null) {
//i行目のデータを処理中
i++;
//1~6行のデータは不要なためスキップ
if (i < 7) {
continue;
}
//配列に「,(カンマ)」で区切った値をセット
String[] data = line.split(",");
//7行目(1つめのデータ)は必ずセット
if (i == 7) {
maxDate = data[0]; //日付をセット
maxTemperature = data[2]; //最高気温をセット
} else {
//最高気温を更新していたら、値をセット
if (Double.parseDouble(maxTemperature) < Double.parseDouble(data[2])) {
maxDate = data[0];
maxTemperature = data[2];
}
}
}
}
//最終結果をコンソールに出力
System.out.println("対象期間で一日の最高気温が最も高かったのは");
System.out.println("日付:" + maxDate);
System.out.println("最高気温:" + maxTemperature);
} catch (UnsupportedEncodingException e) {
System.out.println(i + "行目で読み込み失敗しました");
}
}
}
splitメソッドで1行分の文字列をカンマ区切りでStringの配列にしているところがポイントです!
実行結果
とりあえず以上!
後書き
現場でGitに関する事件が起きたのでこれからJavaGoldの資格試験に関する記事と
Gitに関する記事を並行して投稿していこうと思います