FireDrago

[java] 입력받은 이름을 가나다 순으로 정렬하기 (for문 사용) 본문

프로그래밍/Java

[java] 입력받은 이름을 가나다 순으로 정렬하기 (for문 사용)

화이용 2023. 4. 26. 14:26

<원하는 기능>

1. 원하는 사람 수를 입력받는다.

2. 입력받은 사람 수 만큼 사람의 이름을 입력받고, 가나다 순으로 정렬한다.

 

1. 먼저 원하는 사람수와 각각의 사람을 입력받아 배열에 초기화하는 코드를 만든다.

public class ganada {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		Scanner ss = new Scanner(System.in);

		System.out.println("몇명의 사람을 입력하시겠습니까?");
		int man = ss.nextInt();  //사람 수 입력받기
		String [] name = new String[man]; // 입력받은 사람 수 크기만큼 배열 만들기

		for (int i=0; i<name.length; i++) { //입력받은 사람이름을 배열에 넣기
			System.out.println("이름을 입력하세요 ");
			name[i] = sc.nextLine();
		}

 

 

2. 버블정렬 알고리즘과 compareTo( ) 메서드를 활용하여 가나다 순으로 배열의 순서를 바꿔준다.

for (int i = 0; i < name.length - 1; i++) {
    for (int j = i + 1; j < name.length; j++) {
        if (name[i].compareTo(name[j]) > 0) { //String.compareTo(String) 
            String tmp = name[i];             // 서로 다른 문자열은 아스키 코드 차이 반환
            name[i] = name[j];
            name[j] = tmp;

compareTo ( ) 메서드는 서로다른 문자열끼리 비교하면, 맨 앞글자의 아스키 코드 값의 차이를 반환한다.

 

가나다 순서상 앞쪽의 문자는 낮은 아스키 코드값을 가지므로

 

compareTo 메서드의 값이 0 이상이라면 순서를 바꿔주는 버블정렬 알고리즘을 사용한다. 

 

버블정렬 알고리즘은 https://flowerdragon95.tistory.com/12 여기서 상세한 설명을 볼 수 있다.

 

 

3. 마지막으로 배열의 값을 출력하여 잘 정렬 되었는지 확인한다.

for (int i=0; i<name.length; i++) {
    System.out.println(name[i]);
}

 

+) 사실 Array.sort(배열) 메서드 사용하면 코드 한줄로 배열을 가나다 순으로 정렬 할 수 있다.

하지만 일부러 for문을 사용하여 만들었다.