1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 | package day05; public class Quiz4 { static String profile(long data) { // long을 받는 profile과 String result = ""; // String을 받는 profile은 서로 다른 함수이다 long a = data / 10000000; long b = data % 10000000; // System.out.println(a + "-" + b); result = profile(a + "-" + b); // 이미 작성한 profile을 활용하여 형태만 맞춰준다 return result; } static String profile(String data) { String result = ""; String y = data.substring(0, 2); String g = data.substring(7, 8); int year = Integer.parseInt(y); int gender = Integer.parseInt(g); int currentYear = 2022; // year += (year < 22) ? 2000 : 1900; switch(gender) { case 9: case 0: year += 1800; break; case 1: case 2: year += 1900; break; case 3: case 4: year += 2000; break; } int age = currentYear - year + 1; String format = "%d세, %s입니다"; result = String.format(format, age, gender % 2 == 0 ? "여성" : "남성"); return result; } public static void main(String[] args) { // 주민등록번호를 전달받아서 나이와 성별을 출력하는 함수를 작성하세요 // 인자는 정수 혹은 문자열로 전달할 수 있습니다 // 결과는 String.format을 이용하여 나이, 성별을 문자열형식으로 반환합니다 String s1 = profile(9305162345678L); // long String s2 = profile("930516-2345678"); // String System.out.println(s1); // 30세, 여성입니다 System.out.println(s2); // 30세, 여성입니다 String s3 = profile("010203-3456789"); String s4 = profile(1112234567890L); System.out.println(s3); System.out.println(s4); } } | cs |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | public class Ex02 { public static void main(String[] args) { // 배열 만들기 // 1) 배열은 Reference Type(참조 자료형)이고, 변수는 대상을 참조하는 변수이다 (본체가 아니다) int[] arr1; // 정수형 배열을 참조할 수 있는 참조변수만 선언 (실제 배열은 없음) int arr2[]; // C언어에서는 변수이름 뒤에 []를 작성하고 자바는 둘다 가능하지만 개발자끼리의 암묵적 규칙에 따른다 int[] arr3 = { 2, 7, 8, 4, 6 }; // primitive type(원시 타입)이거나, 다른 변수가 만들어져 있으면 중괄호만으로 생성 가능 int[] arr4 = new int[] { 10, 20, 30, 40, 50 }; // 객체의 배열을 생성하기 위해서는 위와 같이 new 자료형[] 형식으로 생성 가능 int[] arr5 = new int[5]; // 배열의 요소를 명시하지 않고, 빈칸만으로 배열을 생성할 수도 있으며, 길이가 필요함 // 이때, 배열 멤버 요소의 초기값은 자료형에 맞는 0값으로 생성됨 // int[] arr6 = new int[5] { 1, 2, 3, 4, 5 }; // 배열을 생성할 때는 길이 혹은 요소를 명시하며, 위와 같이 둘다 명시하게 되면 문법상 옳바르지 않다 System.out.println(arr3); // 특정 객체를 참조하기 때문에, 객체의 hashcode가 출력됨 showArray(arr3); showArray(arr5); // int의 기본값은 0 0 0 0 0 0 출력됨 // 2) 배열을 가리키는 변수는 참조타입이므로, 다른 대상을 참조할 수 있다 int[] test = { 1, 2, 3 }; // 배열은 참조변수 무조건 가르키기만 ![](https://velog.velcdn.com/images/deletejava/post/d94693dd-cc6e-4d9c-b42d-f25d9978450f/image.png)
한다 showArray(test); test = arr4; showArray(test); } static void showArray(int[] arr) { String blank = " "; for (int i = 0; i < arr.length; i++) { blank = i < arr.length - 1 ? " " : "\n"; System.out.print(arr[i] + blank); } } } | cs |
시간이 지나가면서 영어나 숫자 그리고 기본적인 기호뿐만 아니라 그 나라, 그 언어에서 쓰는 다양한 문자들을 처리하려면 1바이트로 정의된 아스키 코드를 확장할 필요가 있게 되는데, 유니코드는 이런 아스키코드의 한계성을 해소할 수 있는 체계로 만들어진 코드로 각 나라별 언어를 모두 표현하기 위해 나온 코드 체계가 유니코드(unicode)이다.
유니코드는 사용중인 운영체제, 프로그램, 언어에 관계없이 문자마다 고유한 코드 값을 제공하는 새로운 개념의 코드이고, 언어와 상관없이 모든 문자를 16비트로 표현하므로 최대 65,536자까지 포현할 수 있다. 아무튼 자바는 모든 문서를 유니코드로 처리한다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | import java.util.Arrays; // 배열을 제어하기 위해 도움이 되는 함수들이 모여있는 클래스 public class Ex06 { static void showArray(int[] arr) { String blank = " "; for (int i = 0; i < arr.length; i++) { blank = i < arr.length - 1 ? " " : "\n"; System.out.print(arr[i] + blank); } } public static void main(String[] args) { int[] arr = { 2, 7, 8, 4, 6 }; showArray(arr); Arrays.sort(arr); // 별도의 객체를 생성하지 않아도, 정렬 함수를 호출할 수 있다(static) showArray(arr); } } | cs |
※ compareTo 함수는 아래와 같이 사용가능하다
"String".compareTo("Other String")
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | public class Ex08 { static void showArray(String[] arr) { for (int i = 0; i < arr.length; i++) { System.out.print(arr[i] + " "); } System.out.println(); } public static void main(String[] args) { // 문자열 배열의 정렬 String[] arr = { "이지은", "홍진호", "강호동", "이병건", "주호민" }; showArray(arr); // 1) 문자열은 문자의 배열과 같다 // 2) 문자(char)는 정수형이다 (글자의 코드를 정수로 저장한다) // 3) 문자열을 구성하는 첫번째 글자를 비교하여 정렬한다 // 4) 만약, 첫번째 글자가 같으면, 그 다음 글자끼리 비교한다 System.out.println("이지은".compareTo("홍진호")); System.out.println("이지은".compareTo("강호동")); System.out.println("===========================\n\n"); // 5) 정수 두개의 값을 비교한다 n1 > n2 // 6) 두 정수의 차가 0보다 크냐 작냐를 판별한다 n1 - n2 > 0 // 7) s1.compareTo(s2) 는 두 문자열의 차이를 정수로 반환한다 for (int i = 0; i < arr.length - 1; i++) { for (int j = i + 1; j < arr.length; j++) { if (arr[i].compareTo(arr[j]) > 0) { String temp = arr[i]; arr[i] = arr[j]; arr[j] = temp; } } } showArray(arr); } } | cs |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 | public class Quiz { private static void show(String[] nameArray, int[] ageArray) { for (int i = 0; i < nameArray.length; i++) { System.out.printf("%s : %d살\n", nameArray[i], ageArray[i]); } System.out.println(); } private static void name(String[] nameArray, int[] ageArray) { // 이름을 바꾸면 나이도 바꿔줘야한다 System.out.println("========이름 내림차순 정렬========"); for (int i = 0; i < nameArray.length; i++) { for (int j = i + 1; j < nameArray.length; j++) { if (nameArray[i].compareTo(nameArray[j]) > 0) { String temp1 = nameArray[i]; nameArray[i] = nameArray[j]; nameArray[j] = temp1; int temp2 = ageArray[i]; ageArray[i] = ageArray[j]; ageArray[j] = temp2; } } } show(nameArray, ageArray); } private static void age(String[] nameArray, int[] ageArray) { System.out.println("========나이 내림차순 정렬========"); for (int i = 0; i < ageArray.length; i++) { for (int j = i + 1; j < ageArray.length; j++) { if (ageArray[i] < ageArray[j]) { int temp1 = ageArray[i]; ageArray[i] = ageArray[j]; ageArray[j] = temp1; String temp2 = nameArray[i]; nameArray[i] = nameArray[j]; nameArray[j] = temp2; } } } show(nameArray, ageArray); } public static void main(String[] args) { String[] nameArray = { "이지은", "홍진호", "강호동", "주호민", "이병건" }; int[] ageArray = { 30, 41, 53, 42, 40 }; show(nameArray, ageArray); // 1) 나이 순으로 내림차순 정렬 후 출력하세요 name(nameArray, ageArray); // 2) 이름 순으로 오름차순 정렬 후 출력하세요 age(nameArray, ageArray); // 단, 정렬에 의해서 이름과 나이가 엇갈리면 안됩니다 !! } } | cs |