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