JWorld@TW the best professional Java site in Taiwan
      註冊 | 登入 | 全文檢索 | 排行榜  

» JWorld@TW » Java 新手區  

按列印兼容模式列印這個話題 列印話題    把這個話題寄給朋友 寄給朋友    訂閱主題
reply to postflat modego to previous topicgo to next topic
本主題所含的標籤
作者 請問關於二維陣列排序...
heyipomoea





發文: 40
積分: 0
於 2013-04-07 14:40 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
各位大大不好意思打擾了

小弟研究一個作業遇到問題...

就是我想排序二維陣列

For example:
a={{4,B},{2,A},{3,C},{1,D}}

4 B
2 A
3 C
1 D

依照欄位1排序:
1 D
2 A
3 C
4 B

依照欄位2排序:
2 A
4 B
3 C
1 D

就是依照一行欄位排序,其他行也可以隨著移動

小弟寫了一個小成績系統輸入
如下
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
package Practice;
import java.io.*;
import java.util.*;
 
public class P4_41One{
  public static void main(String[] args) throws IOException{
    BufferedReader keyin = new BufferedReader(
                 new InputStreamReader(System.in));    
    int i, j, i_max, j_max;    
    String[] name = new String[5];
    String [][] salary = new String[5][3];    
    i_max = salary.length;
    j_max = salary[0].length;
    
    System.out.println(i_max);
    for(i=0; i<5; i++){            //輸入學生姓名
      System.out.println("輸入學生"+(i+1)+"姓名: ");
      name[i] = keyin.readLine();
    }    
    for(i=0; i<i_max; i++){       //輸入成績
      for(j=0; j<j_max-1; j++){
        salary[i][j] = keyin.readLine();
      }
    }    
    for(i=0; i<=i_max-1; i++){  //計算平均值
      int Stringone = Integer.parseInt(salary[i][0]);
      int Stringtwo = Integer.parseInt(salary[i][1]);
      salary[i][j_max-1] = Integer.toString((Stringone+Stringtwo) / 2);
    }
        
    System.out.println("\n\t姓名\t國文\t英語\t平均"); //輸出成績
    for(i=0; i<i_max; i++){
      System.out.print("\t" + name[i]);      
      for(j=0; j<j_max; j++){
        System.out.print("\t" + salary[i][j]+" ");      
      }
      System.out.println();
    }
  }
}


但是我想要照成績高低輸出排名(但是我不知道如何排序二維陣列)
但是我參考了以下的網站
http://stackoverflow.com/questions/4907683/sort-a-two-dimensional-array-based-on-one-column
將其中一段Code加入我的Code中如下
1
2
3
4
5
6
7
8
9
10
11
12
Arrays.sort(salary, new Comparator<String[]>(){
      @Override
            public int compare(String[] entry1, String[] entry2) {
                String time1 = entry1[0];
                String time2 = entry2[0];
                return time1.compareTo(time2);
            }
    });
    
    for (String[] s : salary) {
            System.out.println(s[0] + " " + s[1]);
        }


但是輸出卻不如預期...
如下圖

未排序:


排序後:


但是我要的結果應該是
國文 英文 平均
A 2 1 1
B 4 3 3
C 6 5 5
D 8 7 7
E 10 9 9

問題點是我不太熟Stackoveflow所講解的Arrays.sort(T[] a, Comparator<? super T> c)的用法...
希望有高手可以講解一下

非常感謝Orz


reply to postreply to post
話題樹型展開
人氣 標題 作者 字數 發文時間
6496 請問關於二維陣列排序... heyipomoea 2463 2013-04-07 14:40
6355 Re:請問關於二維陣列排序... iainst0409 279 2013-04-07 15:26
6313 Re:請問關於二維陣列排序... heyipomoea 17 2013-04-07 16:53
6155 Re:請問關於二維陣列排序... chuanchu 142 2013-04-07 15:37
6458 Re:請問關於二維陣列排序... heyipomoea 19 2013-04-07 16:53
» JWorld@TW »  Java 新手區

reply to postflat modego to previous topicgo to next topic
  已讀文章
  新的文章
  被刪除的文章
Jump to the top of page

JWorld@TW 本站商標資訊

Powered by Powerful JuteForum® Version Jute 1.5.8