Welcome to Yumao′s Blog.
心浮氣躁難做題目啊
靜下來總是思路如泉水湧出
題目:
有一個數據文件如下:
1 23 34 17
65 1234 888 -1
….
9999
數據文件都是十進制整數
但是都是隨機無槼律的
並且有可能重復
有可能為負數
每個整數之前以一個或多個空格(Space)
制表符(Tab)或者回車換行符(Enter)分隔
請編寫程序讀取該數據文件中的所有整數
並且其以從大到小的順序
每行一個整數的格式輸出到另一個文件中.
條件:不允許使用StringTokenizer StreamTokernizer類
以及正則表達式regex
本來一道簡單題
被條件限定成爲了體力題.
My Code:
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 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 | import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; public class FileFormat { public static void main(String[] args) throws IOException { FileReader fr = new FileReader( "input" ); FileWriter fw = new FileWriter( "output" ); ArrayList<integer> list = new ArrayList<integer>(); boolean flag = false ; char [] arr = new char [ 1024 ]; int [] arr2 = new int [ 0 ]; fr.read(arr); for ( int n = 0 ; n < arr.length; n++) { if (arr[n] >= '0' && arr[n] <= '9' ) { arr2 = Arrays.copyOf(arr2, arr2.length + 1 ); arr2[arr2.length - 1 ] = arr[n] - '0' ; flag = true ; } else if (arr[n] == '-' ) { arr2 = Arrays.copyOf(arr2, arr2.length + 1 ); arr2[arr2.length - 1 ] = arr[n]; } else { if (flag) { list.add(toInt(arr2)); arr2 = new int [ 0 ]; } flag = false ; } } Collections.sort(list); Collections.reverse(list); for ( int i= 0 ;i<list.size();i++){ fw.write(String.valueOf(list.get(i))+ "n" ); } fw.close(); fr.close(); System.out.println( "System Complete" ); } public static int toInt( int [] arr) { int sum = 0 ; boolean z = true ; if (arr[ 0 ] == '-' ) { for ( int i = 1 ; i < arr.length; i++) { sum = sum * 10 + arr[i]; z = false ; } } else { for ( int i = 0 ; i < arr.length; i++) { sum = sum * 10 + arr[i]; } } if (z) return sum; else return sum * (- 1 ); } } |