관리 메뉴

취미개발 블로그와 마음수양

자바 - 파일 불러와서 그 안에 들어있는 숫자들 정렬해주는 프로그램 본문

Language/java소스

자바 - 파일 불러와서 그 안에 들어있는 숫자들 정렬해주는 프로그램

아라한사 2014. 4. 18. 11:50

으으음. 상당히 오래걸렸는데 ㅡㅡ;;

심지어 짰던 소스를 잊어먹어서... 드랍박스를 뒤졌다능;;

으음..ㅠㅠ 입출력 조금난관이구만..아직도 소스가 많이 더럽다.



이런 식이면 에러가 난다.



//정수가 문자열의 형태로 들어있는 파일을 읽어서 , 
//오름차순으로 정렬한 다음 정렬된 숫자를 문자열의 형태로 파일에 쓰는 프로그램 

package 챕24입출력;

import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Collections;

public class Quest1_1 {

	public static void main(String[] args) throws IOException {
		BufferedReader inputStream = null;
		PrintWriter outputStream = null;
		ArrayList aList = new ArrayList();
		ArrayList dList = new ArrayList();
		int num;
		try {

			// in = new DataInputStream(new BufferedInputStream(new
			// FileInputStream("datain.txt")));
			inputStream = new BufferedReader(new FileReader("datain.txt"));
			outputStream = new PrintWriter(new FileWriter("dataout.txt"));

			
			//알고리즘 : 텍스트에서 한줄씩 읽어와(String) 정수로 파싱, 에러나면 실수로 파싱..
			// 개선점 : 이거를 애초에 에러호출이 아니라, 정수 가능한지 여부를 알면 조건문으로 치환가능한데 어떻게 해야할지...
			String l;
			int i;
			double double_a;
			while ((l = inputStream.readLine()) != null) {
				try {

					System.out.println(l + "");
					i = Integer.parseInt(l);
					aList.add(i);

				} catch (NumberFormatException e) {
					System.out.println("다른 수 입력 ");
					double_a = Double.parseDouble(l);
					dList.add(double_a);
					
				} catch (Exception e) {
					e.printStackTrace();
				}

			}
			Collections.sort(aList);
			Collections.sort(dList);
			
			System.out.print("총 입력한 문자는 : ");
			for (int a : aList)
				System.out.print(" " + a);
			System.out.println();
			
			System.out.print("총 입력한 소수 문자는 : ");
			for (double a : dList)
				System.out.print(" " + a);

		} catch (FileNotFoundException e) {
			System.out.println("파일이 존재하지않습니다");
		} finally {
			if (inputStream != null) {
				inputStream.close();
			}
			if (outputStream != null)
				outputStream.close();
		}
	}

}