본문 바로가기

Java/java 기초

오름차순, 내림차순(메소드)

import java.util.Scanner;

public class mainClass2 {

	public static void main(String[] args) {
		/*
			sorting
			
			선언부
			
			입력부
			몇개를 정렬하시겠습니까?
			동적할당
			숫자를 갯수에 맞게 입력 받는다
			올림(1)/내림(2)
			
			정렬
			
			결과출력	 
		*/
		
		// numbers[], updown
		int number[];
		boolean updown[] = new boolean[1];
		
		// 1.입력
		// input output
		number = userInput(updown);
		
		// 2.정렬처리
		//	swap
		sorting(number, updown[0]);
						
		// 3.결과처리
		result_print(number);
				
		
				
	}
	
	static int[] userInput(boolean ud[]) {
		Scanner sc = new Scanner(System.in);
		
		// count
		System.out.print("몇개의 숫자를 정렬하시겠습니까? = ");
		int count = sc.nextInt();
		
		// allocation(할당)
		String strNum[] = new String[count];
		
		// 정렬할 숫자들을 입력
		boolean ok = true;
		
		int w = 0;
		while( w < strNum.length ) {
			ok = true;
			
			System.out.print((w + 1) + "번째 수 = ");
			strNum[w] = sc.next();
			
			// 정상적으로 숫자를 입력했는지 확인	 123	1ab
			for (int i = 0; i < strNum[w].length(); i++) {
				int n = strNum[w].charAt(i);	
				if(n < 48 || n > 57) {
					ok = false;
					break;
				}
			}
			if(ok == false) {	// 문자가 있을 시에
				System.out.println("잘못 입력하셨습니다. 다시 입력해 주십시오");
				continue;
			}
			w++;			
		}
		
		// 올림/내림
		System.out.print("올림(1)/내림(2) = ");
		int updown = sc.nextInt();
		if(updown == 1)	ud[0] = true;
		else		ud[0] = false;
		
		for (int i = 0; i < strNum.length; i++) {
			System.out.println("strNum[" + i + "] = " + strNum[i]);
		}
		
		int number[] = new int[strNum.length];		
		for (int i = 0; i < number.length; i++) {
			number[i] = Integer.parseInt(strNum[i]);			
		}
		
		return number;
	}
	
	static void sorting(int num[], boolean up) {
		
		for (int i = 0; i < num.length - 1; i++) {
			for (int j = i + 1; j < num.length; j++) {
				if(up == true) {	// 올림
					if(num[i] > num[j]) {
						/*
						 * temp = num[i]; num[i] = num[j]; num[j] = temp;
						  */
						swap(num, i, j);
					}
				}
				else {					// 내림
					if(num[i] < num[j]) {
						/*
						 * temp = num[i]; num[i] = num[j]; num[j] = temp;
						 */
						swap(num, i, j);
					}
				}				
			}
		}
	}
	
	static void swap(int num[], int i, int j) {
		int temp = num[i];
		num[i] = num[j];
		num[j] = temp;
	}
	
	static void result_print(int num[]) {
		for (int i = 0; i < num.length; i++) {
			System.out.println("number" + (i + 1) + ":" + num[i]);
		}
	}
}