java (29) 썸네일형 리스트형 병합정렬 (Merge Sort) 테스트 파일은 삽입정렬과 같지만 인스턴스생성해주는 부분만 바뀌었습니다. 두 조각으로 계속 나누다가 마지막에 하나가 남으면 다시 위로 병합하면서 정렬하는 병합정렬 이번에는 삽입정렬과는 다르게 생성자를 따로 만들지 않았다. 정렬할때 매개변수로 바로 입력값을 넣게 하였다. 실제로 사용자가 쓸수 있는 메소드는 단 하나 sort 메소드 테스트는 수업시간에 나온 예제 숫자입니다. 삽입정렬과 같은 숫자네;; 9 1 3 2 7 5 4 8 삽입정렬 (Insertion Sort) 오늘 배운 삽입정렬이다. InsertionSort.class 가 삽입정렬 클래스 입니다. sort_test.class 는 정렬 테스트를 위한 메인함수가 있는 클래스 입니다. 다른 정렬도 배우는 대로 추가할까 합니다. 멤버변수 data는 배열인데... 오타네요;; int data[] 이게 맞아요; 생성자와 정렬메소드를 제외하고는 외부에서 쓸필요가 없으므로 private로 접근제한 하였습니다. 생성자 함수로 정렬할 배열값을 입력하고 sort() 메소드를 호출하므로써 모든 과정이 끝납니다. sort() 는 정렬된 배열을 리턴합니다. 수업시간에 예제로 나온 숫자들로 테스트 하였습니다. 다른 숫자는 테스트안해봐서... 정확성을 뭐라 말할 수가 없네요;; 9 1 3 2 7 5 4 8 키보드 입력 - 문자열, 숫자 키보드로 입력받는 방법이다. System.in.read(); 이걸로 가능할줄 알았다.. 이건 한문자 밖에 안되더라;;;; 이걸 프로그램 다 완성하고 알았다...;; 그래서 찾은것이 다음과 같이 버퍼, 스트림 객체를 사용하는것이다. String data = null; BufferedReader inBuff = new BufferedReader(new InputStreamReader(System.in)); data = inBuff.readLine(); 이렇게 읽으면 결과가 data안에 문자열로 저장된다. 문자열로 쓰고싶으면 그대로 쓰면되고... 숫자로 쓰고싶으면 data = Integer.parseInt(inBuff.readLine()); 이렇게 바꿔주면 된다. 어떻게 동작되는지도 모르고 막 썼다 -_-; .. 소수점 표시 float형에서 System.out.print 로 출력할 경우 소수점아래가 꽤 많이 나온다. 이걸 줄이는 방법이 다음과 같다. import java.text.NumberFormat; 이건 c의 include랑 비슷한것임 실행코드는 아래와 같음 NumberFormat nf = NumberFormat.getInstance(); // 객체 인스턴스생성 nf.setMaximumFractionDigits(1); // 최대 소수점 자리수 nf.setMinimumFractionDigits(1); // 최소 소수점 자리수 System.out.print(nf.format(std[0].getAverage())); // 위에 설정한 소수점 포맷으로 적용해서 출력 처음에 이걸 검색해서 찾았는데도.. 잘못썼었다. nf.setM.. 배열 선언 오늘 처음으로 자바로 뭔가를 만들어 봤음;; 만들다가 조금 힘들었던 부분중 하나가 배열 ㅋㅋ int[] a = new int[10]; a라는 이름으로 크기가 10인 배열을 선언하는 문장이다. 다른 타입도 똑같이 해주면 된다. 이건 금방 찾아서 했는데... 문제는 객체 배열이었다.. 객체도 위와 같은 방법으로 student[] std = new student[10]; 이렇게 하면 컴파일시 아무 문제도 없다. 하지만... 사용할때 std[1].name = "ABC"; 이렇게 할경우에도 컴파일시 아무 문제가 없다. 실행하면... 오류가 뜬다.. NULL 어쩌고 저쩌고 하는건데... 이것 때문에 엄청 헤맸다;; 결론은 std에 student 공간만 10개 만들었지.. 메모리(?)가 할당안된거 같다 해결방법은 사.. 이전 1 2 3 4 다음