배열(Array)
String 클래스
데이터 타입[] 배열명
ex) int[] arr;
※ 변수 → 데이터타입 변수명;
배열명 = new 데이터 타입[요소의 개수];
arr = new int[3];
import java.util.Scanner;
public class Array5 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int[] arr= new int[5];
// 80 50 70 100 40
for(int i = 0; i< arr.length; i++){
System.out.print((i+1) + "번째 숫자를 입력하세요. ");
arr[i] = sc.nextInt();
}
// 80 50 70 100 40
// 50 80 70 100 40
// 50 80 70 100 40
// 50 80 70 100 40
// 40 80 70 100 50
// i가 1 / j는 2
// 40 70 80 100 50
// 40 70 80 100 50
// 40 50 80 100 70
// i가 2 / j는 3
// 40 50 80 100 70
// 40 50 70 100 80
// i가 3 / j는 4
// 40 50 70 80 100
int temp = 0;
for(int i =0; i < arr.length-1; i++){ // 0 1 2 3
for(int j = i+1; j < arr.length; j++){ // 1 2 3 4
if(arr[i] > arr[j]){ // 내림차순일때는 arr[i] < arr[j]
temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
for(int i =0; i < arr.length; i++){ // 0 ~ 5
System.out.println(arr[i] + " ");
}
}
}
데이터 타입[][] 배열명 = new 데이터타입[행 요소의 개수][열 요소의 개수];
ex) int[][] num = new int[2][3];
/*
2차원 배열
*/
public class Array6 {
public static void main(String[] args) {
int[][] arr= new int[2][3];
for(int i = 0; i < arr.length; i++){
System.out.println("현재 i의 값 : " + i);
for(int j = 0; j < arr[i].length; j++){ // 0 1 2
System.out.println("→→→→ 현재 j의 값 : " + j);
arr[i][j] = (i + 1) * (j + 1); // [0,0] = 1, [0,1] = 2
}
}
for(int i = 0; i < arr.length; i++){
for(int j = 0; j < arr[i].length; j++){
System.out.print(arr[i][j] + " ");
}
System.out.println();
}
}
}
String 객체명 = new String(저장할 값);
ex) String str = new String("apple");
String 객체명 = 값;
ex) String str = "banana";
⇒ 둘 중 하나로 문자열을 저장하면 된다.
import java.util.Locale;
public class String2 {
public static void main(String[] args) {
String str1 = new String("Java");
System.out.println(str1);
String str2 = "Programming";
System.out.println(str2);
// concat(String str) : 문자열과 문자열을 연결
System.out.println(str1.concat(str2));
// indexOf : 원하는 문자(열)를 찾아 해당하는 문자의 index를 리턴
System.out.println(str2.indexOf('P')); // 0
System.out.println(str2.indexOf('g')); // 3
System.out.println(str2.indexOf("gra")); // 3
System.out.println(str2.indexOf("mimi")); // 찾지 못했을 경우 -1
// trim() : 문자열의 앞뒤 공백을 제거
String str3 = new String(" 자 바 ");
System.out.println(str3 + "😁");
System.out.println(str3.trim() + "😁");
// toLowerCase(), toUpperCase() : 문자를 소문자, 대문자로 변환
System.out.println(str2.toLowerCase()); //programming
System.out.println(str2.toUpperCase()); // PROGRAMMING
// length() : 문자열의 길이를 반환
System.out.println(str2.length()); // 11
// substring() : 원하는 문자열을 추출 (과제와 연관)
System.out.println(str2.substring(3)); // 문자열의 index 3부터 끝까지 추출하여라
System.out.println(str2.substring(3,6)); // 문자열의 index 3부터 시작해서 6이 되기 전까지
// 문자열을 숫자로 변환 (과제와 연관)
String str4 = "100";
int i = 200;
int result = Integer.parseInt(str4) + i; // string -> int
System.out.println(result); // 300
}
}
/*
2021년 05월 26일
주민 등록번호 유효성 검사 프로그램 만들기
*/
import java.util.Scanner;
public class Homework2 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while(true) {
System.out.print("주민등록번호 : ");
String jumin = sc.next(); // 주민등록번호 13자리
String num2 = "234567892345"; // 12자리
int a = Integer.parseInt(jumin.substring(0, 1)) * Integer.parseInt(num2.substring(0, 1)); // num2 = 2
int b = Integer.parseInt(jumin.substring(1, 2)) * Integer.parseInt(num2.substring(1, 2)); // num2 = 3
int c = Integer.parseInt(jumin.substring(2, 3)) * Integer.parseInt(num2.substring(2, 3)); // num2 =4
int d = Integer.parseInt(jumin.substring(3, 4)) * Integer.parseInt(num2.substring(3, 4)); // num2 = 5
int e = Integer.parseInt(jumin.substring(4, 5)) * Integer.parseInt(num2.substring(4, 5)); // num2 = 6
int f = Integer.parseInt(jumin.substring(5, 6)) * Integer.parseInt(num2.substring(5, 6)); // num2 = 7
int g = Integer.parseInt(jumin.substring(6, 7)) * Integer.parseInt(num2.substring(6, 7)); // num2 = 8
int h = Integer.parseInt(jumin.substring(7, 8)) * Integer.parseInt(num2.substring(7, 8)); // num2 = 9
int i = Integer.parseInt(jumin.substring(8, 9)) * Integer.parseInt(num2.substring(8, 9)); // num2 = 2
int j = Integer.parseInt(jumin.substring(9, 10)) * Integer.parseInt(num2.substring(9, 10)); // num2 = 3
int k = Integer.parseInt(jumin.substring(10, 11)) * Integer.parseInt(num2.substring(10, 11)); // num2 = 4
int l = Integer.parseInt(jumin.substring(11, 12)) * Integer.parseInt(num2.substring(11, 12)); // num2 = 5
int m = Integer.parseInt(jumin.substring(12, 13)); // 주민번호 맨 뒷자리
int sum = a + b + c + d + e + f + g + h + i + j + k + l;
int rest = sum % 11; // 11로 나눈 나머지 값 구하기
int minus = 11 - rest; // 11에서 뺌
if (minus > 10) {
minus = minus % 10;
}
if (m == minus) {
System.out.println("유효한 주민번호 입니다.");
break;
} else {
System.out.println("유효하지 않은 주민번호 입니다.");
}
}
}
}
혼자서 자바 공부나 파이썬 공부할때 가장 부족했던 파트가 배열이랑 문자열 파트부분 문제를 풀면 꼭 문제를 못풀곤 했던 파트였다,, 내가 생각하기엔 가장 어려운 부분이 이 부분인것같다. 특히 2차원 배열이 나오면 머리속이 하얘지곤 했는데 개념부터 제대로 짚고 넘어가고, 응용 문제를 푸니 그나마 예전보다 개념을 확실히 알고 가는 느낌이다. 그래도 틈틈히 연습문제를 풀면서 개념을 잊어버리지 않게 공부해야겠다.