今さら気づいたこと
練習問題を解いてみたら、今になって気づいたことがあった。
import java.io.*; public class AgeAverage { /** 二人の名前を年齢を入力すると、その人たちの年齢の * 平均を表示するプログラム */ private static String getname,getage,name1,name2; private static int age1,age2; public static void main(String[] args)throws IOException { System.out.println("二人分の名前と年齢を入力して下さい"); BufferedReader reader = new BufferedReader (new InputStreamReader(System.in)); // String getname,getage,name1,name2; // int age1,age2; for(int i=0; i<2; i++){ System.out.println((i+1) + "人目の名前を入力して下さい"); getname = reader.readLine(); System.out.println(getname + "さんの年齢を入力して下さい"); getage = reader.readLine(); if(i == 0){ name1 = getname; age1 = Integer.parseInt(getage); } if(i == 1){ name2 = getname; age2 = Integer.parseInt(getage); } } float ave = (age1 + age2) / 2F; System.out.println(name1 + "さんと" + name2 + "さんの年齢平均は" + ave + "です"); } }
最初、変数の宣言をfor文の前でしてたんだけど思い切りコンパイルエラーになった。なんだこれーと色々いじってみた結果、for文の中で変数が初期化(初期化というより代入?)してもそのfor文の外から見れば、その変数は初期化されていない扱いとなるっぽいことに気づいた。
クラス全体で使う変数を宣言する場合、フィールドにしなきゃだめなのかーと今さらながらの発見。小さなことなのかもしれないけど、こうやって自分で気づけたことが嬉しい。