FireDrago
[java] 입력받은 이름을 가나다 순으로 정렬하기 (for문 사용) 본문
<원하는 기능>
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문을 사용하여 만들었다.
'프로그래밍 > Java' 카테고리의 다른 글
| [java] 인터페이스 예제로 정리하기 (0) | 2023.05.02 |
|---|---|
| [java] 상속과 다형성 개념정리 (0) | 2023.05.01 |
| [java] 버블정렬 알고리즘 (0) | 2023.04.25 |
| [java] 피라미드, 역피라미드 만들기 (0) | 2023.04.24 |
| [java] 참조변수 배열로 회원가입 구현하기 (0) | 2023.04.21 |
