実現したいこと
senbatsuの名前列(第0列)の内容をアルファベット順になるように並び替えをしたい
前提
・senbatsuの情報を並び替える
・アルファベット順になるようにする
発生している問題・エラーメッセージ
・みな様からのアドバイスをもとにプログラムを修正したのですが、
”name”の列をアルファベット順にソートすることができません。
該当のソースコード
Java
1class Quiz9A { 2 public static void main(String[] args) { 3 String[][] senbatsu = { 4 {"Name","BloodType","Year","Month","Day","HomeTown"}, 5 {"A","O","1992","11","21","Oita"}, 6 {"B","B","1991","7","15","Kagoshima"}, 7 {"C","AB","1994","3","26","Saitama"}, 8 {"D","AB","1991","4","8","Tokyo"}, 9 {"E","B","1997","3","8","Aichi"}, 10 {"F","B","1993","7","14","Osaka"}, 11 {"G","A","1998","3","19","Kagoshima"}, 12 {"H","O","1990","8","13","Tokyo"}, 13 {"I","A","1994","3","30","Saitama"}, 14 {"J","B","1992","12","8","Kyoto"}, 15 {"K","A","1991","6","24","Aichi"}, 16 {"L","B","1993","9","19","Nara"}, 17 {"M","O","1990","1","17","Saitama"}, 18 {"N","B","1991","11","29","Aichi"}, 19 {"O","B","1993","4","1","Aichi"}, 20 {"P","B","1994","11","25","Tokyo"} 21 }; 22 int k,i,j,leadi; 23 String lead, tmp; 24 for(k=1; k<senbatsu.length-1; k++){ 25 26 // k行目以下の先頭値leadとその行番号leadiを探す 27 lead = senbatsu[k][0]; 28 leadi = k; 29 for (i=k+1; i < senbatsu.length; i++) { 30 if(senbatsu[i][0].compareTo(lead)>0){ 31 lead =senbatsu[i][0]; 32 leadi =i; 33 } 34 35 // k行とleadi行(先頭行)を入替.入替時に変数tmpを使用する 36 for (j = 0; j < senbatsu[0].length; j++) { 37 tmp = senbatsu[k][j]; 38 senbatsu[k][j] = senbatsu[leadi][j]; 39 senbatsu[leadi][j] = tmp; 40 } 41 } 42 } 43 ///// 44 for(i=0; i<senbatsu.length; i++){ 45 System.out.print(senbatsu[i][0]); 46 for(j=1; j<senbatsu[i].length; j++){ 47 System.out.print(", "+senbatsu[i][j]); 48 } 49 System.out.println(""); 50 } 51 } 52}
### 試したこと 29行目を次のように変更しました。 変更前:i=k 変更後:i=k+1 ※先頭行の次から比較対象とするためi=k+1にしました。 しかし、上記に変更しても、最初の4行までしか入れかえを行うことができません。 どの箇所がまちがっているのか、アドバイスいただけないでしょうか。 よろしくお願いいたします。 ### 補足情報(FW/ツールのバージョンなど)
回答4件
あなたの回答
tips
プレビュー