質問編集履歴

1

アドバイスをもとに構文を修正しました

2023/05/31 08:55

投稿

JAVA-B1
JAVA-B1

スコア4

test CHANGED
@@ -1 +1 @@
1
- 表計算(集計)機能を使い、データから最年長を表示したい
1
+ データから最年長を表示したい
test CHANGED
@@ -13,10 +13,10 @@
13
13
  エラーメッセージ
14
14
  ```
15
15
 
16
- ### 該当のソースコード
16
+ ### Java
17
17
 
18
18
  ```ここに言語名を入力
19
- class test {
19
+ class Quiz8 {
20
20
  public static void main(String[] args){
21
21
  String[][] senbatsu = {
22
22
  {"Name","BloodType","Year","Month","Day","HomeTown"},
@@ -27,7 +27,7 @@
27
27
  {"E","B","1997","3","8","Aichi"},
28
28
  {"F","B","1993","7","14","Osaka"},
29
29
  {"G","A","1998","3","19","Kagoshima"},
30
- {"H,"O","1990","8","13","Tokyo"},
30
+ {"H","O","1990","8","13","Tokyo"},
31
31
  {"I","A","1994","3","30","Saitama"},
32
32
  {"J","B","1992","12","8","Kyoto"},
33
33
  {"K","A","1991","6","24","Aichi"},
@@ -38,18 +38,25 @@
38
38
  {"P","B","1994","11","25","Tokyo"}
39
39
  };
40
40
  int i,j;
41
- int maxy = Integer.parseInt(senbatsu[1][2]);
41
+ int maxy = Integer.parseInt(senbatsu[1][2]);//1列目
42
- int maxm = Integer.parseInt(senbatsu[1][3]);
42
+ int maxm = Integer.parseInt(senbatsu[1][3]);//2列目
43
- int maxd = Integer.parseInt(senbatsu[1][4]);
43
+ int maxd = Integer.parseInt(senbatsu[1][4]);//3列目
44
44
  int maxi = 1;
45
45
  int y,m,d;
46
- for(i=2; i<senbatsu.length; i++){
46
+ for(i=2; i<senbatsu.length; i++){//1行目がタイトル行のため、2行からカウントしていく
47
- y = Integer.parseInt(senbatsu[i][2]);
47
+ y = Integer.parseInt(senbatsu[i][2]);//年の行
48
- m = Integer.parseInt(senbatsu[i][3]);
48
+ m = Integer.parseInt(senbatsu[i][3]);//月の行
49
- d = Integer.parseInt(senbatsu[i][4]);
49
+ d = Integer.parseInt(senbatsu[i][4]);//日の行
50
-
50
+ int maxY = Integer.parseInt(senbatsu[maxi][2]);//年を比較した時、大きい値を記録
51
+ int maxM = Integer.parseInt(senbatsu[maxi][3]);//月を比較した時、大きい値を記録
52
+ int maxD = Integer.parseInt(senbatsu[maxi][4]);//日を比較した時、大きい値を記録
53
+
51
-    if (yx < yy || (yx ==yy&& mx <my) || (yx ==yy&&mx ==my &&dx <dy)) //★
54
+ if (y<maxY || (y==maxY && m<maxM) || (y==maxY && m==maxM && d<maxD)) {
55
+ maxi = i;
56
+ //指定した年数<年の最大値 かつ (指定した年=最大値 かつ 指定した月<月の最大値) かつ (指定した年=最大値 または 指定した月=最大値 または指定した月<最大値))
57
+ //各最大値は、maxiに記録
52
- }
58
+ }
59
+ }
53
60
  System.out.print(senbatsu[maxi][0]);
54
61
  for(j=1; j<senbatsu[maxi].length; j++){
55
62
  System.out.print( ", "+senbatsu[maxi][j] );
@@ -58,21 +65,20 @@
58
65
  }
59
66
  }
60
67
 
68
+
61
69
  ```
62
70
 
63
71
  ### 試したこと
64
72
 
65
- ・生年月日の最大値の指定
66
- ・CSV形式での出力の指定
73
+ みな様から頂いたアドバイスをもとに、プログラムを修正しました。
67
- は作成するこができした。
74
+ ありがうございす!
68
75
 
76
+ 上記プログラムで、一応、正しく実行できる様子です。
69
- しかし、条件分けの構文がうまく作成できません。
77
+ しかし、私自信が、正しく構文を理解できているのか自信がありません。
70
- 同年や同月生まれがいる場合を考慮するため、
71
- ★行で条件分けをしようと考えています。
72
78
 
73
- どのようif文条件指定すればよいか、
79
+ 各行ごとコメントで行意味記載しました。
80
+ 間違って理解している箇所がありましたら、ご指摘いただけないでしょうか?
74
- ご教示いただけないでょうか
81
+ よろしくお願たします
75
-
76
82
 
77
83
  ### 補足情報(FW/ツールのバージョンなど)
78
84