Daily coding

Java Basic : day 8 - Example 02: Sorting 정렬 클래스 구현하기 본문

Language/Java_basic

Java Basic : day 8 - Example 02: Sorting 정렬 클래스 구현하기

sunnnkim 2019. 11. 27. 20:10
package day8.example2;

import java.util.Arrays;
import java.util.Scanner;

public class Sorting {
	
	private int[] originalArr;
	private int[] sortArr;
	private int count;
	private boolean updown;
	
	public Sorting() {
		mainMenu();
		originalArr = new int[count];
	}
	
	// 숫자입력 메인
	public void mainMenu() {
		Scanner sc = new Scanner(System.in);
		while(true) {
			System.out.println("몇 개를 정렬하시겠습니까 ? ");
			System.out.print(">> ");
			try {
				count = sc.nextInt();
				break;
			} catch (Exception e) {
				System.out.println("잘못입력했습니다.");
			}
		}
	}
	// 정렬할 숫자 입력 받기
	public void startInsert() {
		Scanner sc = new Scanner(System.in);
		int w = 0;
		while ( w < originalArr.length) {
			System.out.print((w+1)+"번째 숫자 : ");
			try {
				int num = sc.nextInt();
				originalArr[w] = num;
				w++;
			} catch (Exception e) {
				System.out.println("잘못입력했습니다.");
			}
		}
		selectUpdown();
	}
	
	// 정렬하기 선택
	
	public void selectUpdown() {
		Scanner sc = new Scanner(System.in);
		sortArr = originalArr.clone();
		System.out.println("번호를 선택하세요 :");
		System.out.println("올림차순(1) 내림차순(2)");
		System.out.print(">> ");
		int ud  = sc.nextInt();
		if(ud == 1) updown = true;
		else		updown = false;
		sc.close();
		sort();
	}
	
	// 정렬하기
	public void sort(){
		
		int temp;
		for (int i = 0; i < sortArr.length -1; i++) {
			for (int j = i + 1; j < sortArr.length; j++) {
				// 오름차순 
				if(updown == true) {
					if(sortArr[i] > sortArr[j]) {
						temp = sortArr[i];
						sortArr[i] = sortArr[j];
						sortArr[j] = temp;
					}
				}
				// 내림차순
				else {
					if(sortArr[i] < sortArr[j]) {
						temp = sortArr[i];
						sortArr[i] = sortArr[j];
						sortArr[j] = temp;
					}
				}
			}
		}
		printArray();
	}
	
	public void printArray() {
		System.out.println("정렬 전 : " + Arrays.toString(originalArr));
		System.out.println("정렬 후 : " + Arrays.toString(sortArr));
	}
}