• 다음은 유저가 입력한 두 단어가 아나그램(anagram:철자 순서만 바뀐 단어)인지를 판별하는 예제이다.
import java.util.Arrays;
import java.util.Scanner;
 
public class Anagram {
    // main method에서 입력받은 string타입의 두 단어를 parameter로 받아서 아나그램인지 판별하는 method.
    // 아나그램일경우 true, 아나그램이 아닐경우 false값을 리턴함.
    public static boolean isAnagram(String str1, String str2) {
        boolean result = true; // result의 기본값은 true이며 아래의 판별과정에서 아나그램이 아닐경우
                          // false.
 
        char[] arr1 = str1.toCharArray(); // str1 parameter의 string값을 char타입의
                             // arr1배열에 넣은 후
        Arrays.sort(arr1); // 알파벳 순서대로 정렬.
        System.out.println(Arrays.toString(arr1)); // arr1배열에 정렬된 결과 출력.
 
        char[] arr2 = str2.toCharArray();
        Arrays.sort(arr2);
        System.out.println(Arrays.toString(arr2));
 
        // 먼저 입력받은 두 단어의 길이가 다를 경우 아나그램이 아니므로 false값 리턴후 종료.
        if (arr1.length == arr2.length) {
            for (int i = 0; i < arr1.length; i++) { // 두 단어의 길이가 같은 경우 arr1과
                                      // arr2의 내용이(알파벳이)같은지 확인.
                if (arr1[i] != arr2[i]) { // 확인 과정 중 같지않은 경우가 나오면 result값을
                                  // false로 바꾸고 종료.
                    result = false;
                    break;
                }
            }
        } else {
            result = false;
        }
        return result;
    }
 
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
 
        System.out.println("첫 번째 문자열을 입력해주세요.");
        String str1 = scanner.nextLine();
 
        System.out.println("두 번째 문자열을 입력해주세요.");
        String str2 = scanner.nextLine();
 
        if (isAnagram(str1, str2) == true) { // isAnagram method로 두 단어를
                                // parameter로 넘겨준 후 결과가 true일 경우.
            System.out.println("두 문자열은 Anagram이 확실합니다.");
 
        } else { // isAnagram method로 두 단어를 parameter로 넘겨준 후 결과가 false일 경우.
            System.out.println("두 문자열은 Anagram이 아닙니다.");
        }
    }
}

  • 다음은 [Java] 02. 제어문에서 다뤘던 'FindNearestPoint'예제에 배열을 적용하여 다시 짜본 예제이다.
import java.util.Arrays;
 
public class DistanceCalculator {
 
    public static double calcDistance(int[] p1, int[] p2) { // 정의된 다섯개의 좌표와 유저가
                                                            // 입력한 좌표에 대한 값을
                                                            // parameter로 받아서
                                                            // 각각의 거리를 계산.
        return Math.sqrt(Math.pow(p1[0] - p2[0], 2) + Math.pow(p1[1] - p2[1], 2));
    }
 
    public static void main(String[] args) {
        int[][] dataArr = { { 2, 4 }, { 4, 6 }, { 10, 4 }, { 3, 2 }, { 9, 2 } };// 미리
                                                                                // 정의된
                                                                                // 다섯개의
                                                                                // 좌표.
        int[] targetPoint = { 3, 4 }; // 임의의 유저입력 좌표.
        int[] minPoint = null;
 
        double minDistance = Double.MAX_VALUE;
 
        for (int[] temp : dataArr) {
            double distance = calcDistance(temp, targetPoint); // 미리 정의된 다섯개의
                                                                // 좌표와 유저입력 좌표와의
                                                                // 거리 계산.
            if (distance < minDistance) {
                minDistance = distance;
                minPoint = temp;
            }
 
            System.out.println(distance);
        }
        System.out.println("-----------");
        System.out.println(minDistance);
        System.out.println(Arrays.toString(minPoint));
    }
}

  • 배열을 공부하면서 가장 크게 느낀 점은 배열 자체의 내용보다 오히려 '타입'에 대한 것이 크다. 배열이라는 것이 같은 '타입'에 대한 것들을 한꺼번에 다루는 것이기에 '타입'에 대한 고민을 할 수밖에 없었는데 이는 자바를 공부하면서 가장 애매했던 것 중의 하나였다. 특히 사용자(개발자)가 정의하는 '타입'이 주는 어려움과 편리함에 이해하고 나서 자바라는 언어를 조금이나마 더 이해할 수 있게 됐달까. 지금 이 포스팅에서 자바의 '타입'에 대해 더 깊이 다룰 순 없지만, 누군가 배열에 대한 궁금함을 안고 이 글을 보게 된다면 배열뿐만이 아니라 아마도 나와 같은 고민을 하게 될 것이라..!


'공대생 > Java Programming' 카테고리의 다른 글

[Java] 07. 객체지향(2)  (0) 2014.04.04
[Java] 06. 객체지향(1)  (0) 2014.04.04
[Java] 04. 배열(1)  (0) 2014.04.01
[Java] 03. 반복문  (0) 2014.03.31
[Java] 02. 제어문  (0) 2014.03.31
Posted by 믐믐믐믐믐
,