実現したいこと
指定したデータから最年長を出力するプログラムを作成したい
前提
・生年月日を考慮した出力結果にしたい
・CSV形式で出力する
発生している問題・エラーメッセージ
エラーメッセージ
Java
class Quiz8 { public static void main(String[] args){ String[][] senbatsu = { {"Name","BloodType","Year","Month","Day","HomeTown"}, {"A","O","1992","11","21","Oita"}, {"B","B","1991","7","15","Kagoshima"}, {"C","AB","1994","3","26","Saitama"}, {"D","AB","1991","4","8","Tokyo"}, {"E","B","1997","3","8","Aichi"}, {"F","B","1993","7","14","Osaka"}, {"G","A","1998","3","19","Kagoshima"}, {"H","O","1990","8","13","Tokyo"}, {"I","A","1994","3","30","Saitama"}, {"J","B","1992","12","8","Kyoto"}, {"K","A","1991","6","24","Aichi"}, {"L","B","1993","9","19","Nara"}, {"M","O","1990","1","17","Saitama"}, {"N","B","1991","11","29","Aichi"}, {"O","B","1993","4","1","Aichi"}, {"P","B","1994","11","25","Tokyo"} }; int i,j; int maxy = Integer.parseInt(senbatsu[1][2]);//1列目 int maxm = Integer.parseInt(senbatsu[1][3]);//2列目 int maxd = Integer.parseInt(senbatsu[1][4]);//3列目 int maxi = 1; int y,m,d; for(i=2; i<senbatsu.length; i++){//1行目がタイトル行のため、2行からカウントしていく y = Integer.parseInt(senbatsu[i][2]);//年の行 m = Integer.parseInt(senbatsu[i][3]);//月の行 d = Integer.parseInt(senbatsu[i][4]);//日の行 int maxY = Integer.parseInt(senbatsu[maxi][2]);//年を比較した時、大きい値を記録 int maxM = Integer.parseInt(senbatsu[maxi][3]);//月を比較した時、大きい値を記録 int maxD = Integer.parseInt(senbatsu[maxi][4]);//日を比較した時、大きい値を記録 if (y<maxY || (y==maxY && m<maxM) || (y==maxY && m==maxM && d<maxD)) { maxi = i; //指定した年数<年の最大値 かつ (指定した年=最大値 かつ 指定した月<月の最大値) かつ (指定した年=最大値 または 指定した月=最大値 または指定した月<最大値)) //各最大値は、maxiに記録 } } System.out.print(senbatsu[maxi][0]); for(j=1; j<senbatsu[maxi].length; j++){ System.out.print( ", "+senbatsu[maxi][j] ); } System.out.println(""); } }
試したこと
みな様から頂いたアドバイスをもとに、プログラムを修正しました。
ありがとうございます!
上記プログラムで、一応、正しく実行できる様子です。
しかし、私自信が、正しく構文を理解できているのか自信がありません。
各行ごとにコメントで行の意味を記載しました。
間違って理解している箇所がありましたら、ご指摘いただけないでしょうか?
よろしくお願いいたします。
補足情報(FW/ツールのバージョンなど)
上記プログラムを実行した場合、
実行結果が↓のになるように作成したいと考えています。
M, O, 1990, 1, 17, Saitama
回答3件
あなたの回答
tips
プレビュー