01 //MySort.java  --- sample using Arrays.sort( )
   02 // @CopyLeft by tsaiwn@cs.nctu.edu.tw
   03 import java.applet.*;  
   04 import java.util.*;  
   05 import java.io.*;
   06 public class MySort extends Applet {
   07     static java.io.PrintStream cout=System.out;
   08     public static void main(String gg[ ]) {
   09        MySort me = new MySort( );
   10        me.init( ); me.start( ); 
   11        me.test( );  
   12        cout.println("Thank you and Bye!");
   13     }//main(
   14     void test( ) {
   15        cout.println("Before sort Array a:"); 
   16        printAry(a);   
   17        java.util.Arrays.sort(a);  
   18        cout.println("After sort:");
   19        printAry(a);
   20        reverse(a);
   21        cout.println("After Reverse it:");
   22         printAry(a);  
   23       //////
   24        cout.println("======\nBefore sort Array b:"); 
   25        printAry(b);    
   26        Arrays.sort(b);  
   27        cout.println("After sort:");   
   28        printAry(b); 
   29     }// test(
   30  ////// template function 無法用於 基礎型別的陣列(Primitive Array)
   31     void printAry(int y[ ]) {
   32        for(int x: y) {   // 陣列 y[ ] 中每個 x
   33           cout.print(" "+x);
   34        }//for
   35        cout.println( );  // 換一列   NewLine
   36     }// printAry(
   37     void printAry(double y[ ]) {
   38        for(double x: y) {   // 陣列 y[ ] 中每個 x
   39           cout.print(" "+x);
   40        }//for
   41        cout.println( );  // 換一列   NewLine
   42     }// printAry(   
   43     void reverse(int x[ ]) {
   44         int i=0, k = x.length - 1;
   45         int tmp;
   46         for( ;; ) {
   47             if(i >= k) return;
   48             tmp=x[i]; x[i]=x[k]; x[k]=tmp;
   49             i++; --k;
   50         }// for
   51     }//    
   52     int a[ ] = { 33, 88, 55, 66, 123, 99, 22, 77};
   53     double b[ ] = { 38.49, 55.66, 66.5, 25
   54         , 168, 99.5, 85.25, 13.38, 77.5};  
   55 } // class  
   56 /******
   57 D:\jtest> path "c:\Program Files\Java\jdk1.6.0_23\bin";%path% 
   58 
   59 D:\jtest> javac MySort.java 
   60 
   61 D:\jtest> java MySort  
   62 Before sort Array a:
   63  33 88 55 66 123 99 22 77
   64 After sort:
   65  22 33 55 66 77 88 99 123
   66 After Reverse it:
   67  123 99 88 77 66 55 33 22  
   68 ======  
   69 Before sort Array b:
   70  38.49 55.66 66.5 25.0 168.0 99.5 85.25 13.38 77.5
   71 After sort:
   72  13.38 25.0 38.49 55.66 66.5 77.5 85.25 99.5 168.0  
   73 Thank you and Bye!
   74 
   75 D:\jtest>
   76 ******/  


這是新版本的 MySort.java 

   01 //MySort.java  --- sample using java.util.Arrays.sort( )
   02 // @CopyLeft by tsaiwn@cs.nctu.edu.tw
   03 // Modified by xxxxyyyy(你的學號姓名)  ! 注意至少加入三個整數五個實數!!
   04 import java.applet.*;
   05 import java.util.*;
   06 import java.io.*;
   07 public class MySort extends Applet {
   08     static java.io.PrintStream cout=System.out;
   09     public static final String myName="你的學號姓名";
   10     public static void main(String argv[ ]) {
   11        MySort me = new MySort( );
   12        me.init( ); me.start( );
   13        me.test( );
   14        cout.println("Thank you and Bye!\nThe program:");
   15        me.prtProg( );  try{System.in.read( );}catch(Exception e){;} // to print myself
   16     }//main(
   17     public MySort( ) {  
   18     }//
   19 
   20     void prtProg( ) {  try{ new PrintMe( getClass( ) ); }catch(Exception e){;} }  ///*****
   21 
   22     void test( ) {
   23        cout.println("Test sorting...modified by " + myName);
   24        cout.println("Before sort Array a:");
   25        printAry(a);
   26        java.util.Arrays.sort(a);    // 可以寫全名  !!!!!!   java.util.*  裡面很多好東西 !
   27        cout.println("After sort:");
   28        printAry(a);
   29        reverse(a);
   30        cout.println("After Reverse it:");
   31         printAry(a);
   32       ////// 測試 sort 實數陣列(double array)
   33        cout.println("======\nBefore sort Array b:");
   34        printAry(b);
   35        Arrays.sort(b);   // 這樣也可以, 因為已經有 import java.util.*;
   36        cout.println("After sort:");
   37        printAry(b);
   38        // cout.println("After Reverse it:");
   39        // reverse(b);   // 須再寫一個  void reverse(double 陣列) { }
   40        // cout.println("After Reverse it:");
   41     }// test(
   42 
   43  ////// template function 無法用於 基礎型別的陣列(Primitive Array)
   44     void printAry(int y[ ]) {
   45        for(int x: y) {   // 陣列 y[ ] 中每個 x
   46           cout.print(" "+x);
   47        }//for
   48        cout.println( );  // 換一列   NewLine
   49     }// printAry(
   50 
   51     void printAry(double y[ ]) {
   52        int i=0;     // index 索引, 註標(Subscript)
   53        double x;   // 以下寫法是傳統的 Loop 迴圈; 注意 Java 的 array 陣列長度用 .length
   54        for(i=0; i < y.length; ++i) {   // 陣列 y[ ] 中每個 x
   55           x = y[i];
   56           cout.print(" "+x);
   57        }//for
   58        cout.println( );  // 換一列   NewLine
   59     }// printAry(
   60 
   61     void reverse(int x[ ]) {   // 把 array 左右對調(顛倒過來 !)
   62         int i=0, k = x.length - 1;
   63         int tmp;
   64         for( ;; ) {
   65             if(i >= k) return;    //  i 跑到 k 右邊去了就是做完了 !
   66             tmp=x[i]; x[i]=x[k]; x[k]=tmp;
   67             i++; --k;    // i 往右邊,  k  往左邊; 總有一天會交錯而過 ! 
   68         }// for
   69     }//
   70     // 須再寫一個  void reverse(double 陣列) { }
   71     int a[ ] = { 33, 88, 55, 66, 123, 99, 22, 77};
   72     double b[ ] = { 38.49, 55.66, 66.5, 25
   73         , 168, 99.5, 85.25, 13.38, 77.5};
   74 } // class
   75 /******
   76 D:\jtest> path "c:\Program Files\Java\jdk1.6.0_23\bin";%path%
   77 
   78 D:\jtest> javac MySort.java
   79 
   80 D:\jtest> java MySort
   81 Test sorting...modified by 你的學號姓名
   82 Before sort Array a:
   83  33 88 55 66 123 99 22 77
   84 After sort:
   85  22 33 55 66 77 88 99 123
   86 After Reverse it:
   87  123 99 88 77 66 55 33 22
   88 ======
   89 Before sort Array b:
   90  38.49 55.66 66.5 25.0 168.0 99.5 85.25 13.38 77.5
   91 After sort:
   92  13.38 25.0 38.49 55.66 66.5 77.5 85.25 99.5 168.0
   93 Thank you and Bye!
   94 The program:
   95 D:\jtest>
   96 ******/


這是 PrintMe.java 

   01 //PrintMe.java -- new PrintMe(Class); 就會把 Class.java 印出
   02 //@CopyLeft by tsaiwn@csie.nctu.edu.tw
   03 import java.io.*;
   04 import java.util.*;
   05 import java.net.*;
   06 import java.awt.*;
   07 import java.applet.*;
   08 class PrintMe  extends Applet {
   09     String fn="";
   10     static PrintStream cout = System.out;
   11     static BufferedReader br = null;
   12     public static Class theClass = null;
   13     PrintMe(Class who) {
   14        theClass = who;
   15        try{
   16           fn = "" + who.getName( ) + ".java";
   17        }catch(Exception e) {;}
   18        printOut( );
   19     }
   20     void printOut( ) {
   21         System.out.println(fn);
   22         String fileName = fn;
   23         String s = null;
   24         br = getReader(fileName);  if(br==null) return;
   25         int n = 0;
   26         try{
   27            s = br.readLine( );
   28         }catch(Exception e) {;}
   29         while(s != null) {     // Java 要改為這樣偵測是否 EOF 檔案結束!
   30         //while( ! br.eof() ) {   // 因 Java 的 BufferReader 沒有 eof( ) 可用
   31              ++n;
   32              cout.printf("%5d %s\r\n", n, s);   // for DOS/Windows
   33              try{s = br.readLine( );}catch(Exception e) {;}
   34          } // while
   35          cout.printf("\r\n");   // remove "\r" on Unix system
   36     }//printOut(
   37     public BufferedReader getReader(String fileName) {
   38          BufferedReader br = null;
   39          InputStream is  = null;
   40          Class cc = theClass;
   41          try {
   42              is = cc.getResourceAsStream(fileName);
   43              br = new BufferedReader(  new InputStreamReader(is) );
   44          }catch(Exception e) {
   45              System.err.println("? Can NOT find file: " + fileName);
   46          }
   47          return br;
   48     }// getReader(
   49 } //class PrintMe(

點這裡抓 sortNew.jar