오늘은 오전부터 열심히 2주 차 강의와 3주 차 chap9까지 강의를 들었다. 컬렉션, 이게 왜 이렇게 머리에 안 들어오는지 한참을 복습하고 강의 듣고 코드 작성해 보고 시간을 보냈다. 12시간은 하루하루 느끼는 거지만 듣기에는 엄청 긴 시간 같고, 시간이 잘 안 갈 것 같은 느낌인데 이게 막상 12시간을 보내다 보면 저녁을 먹고 난 후에는 시간이 너무 빨리 흘러서 부족하다고 느낄 정도다. (그래서 항상 TIL 쓰는 시간이 자꾸 9시 이후가 돼버리는,,) 오늘만 해도 내가 세워둔 계획은 아주 많았는데 강의만 듣고 이해가 안 되는 부분 붙잡고 몇 번 찾아보고 정리만 살짝 했는데 12시간 중 6시간 이상이 후루룩 지나갔다.
아쉽게 마지막 task를 하지 못 했다..
오전부터 오후 5시까지는 계속 2주 차 강의와 3주 차 강의를 들었다. 컬렉션을 사용해서 과제를 진행해야 하는데 강의를 들을 때는 이해돼서 넘어갔는데 막상 사용하려니 어떻게 사용을 해야 하는지 이게 정확하게 뭔지 헷갈려서 다시 찾아보고 복습하는데 시간이 꽤 걸렸다.
get명령어는 해당 번지의 값을 가져오는 명령어
for (int i=0; i < strList.size(); i++){
int num = i + 1;
System.out.println(num + "." + strList.get(i));
}
Iterator는 컬렉션에 저장된 요소들을 순차적으로 읽어오기 위해 사용
Iterator iterator = strSet.iterator();
Objects.equals와 equals의 가장 큰 차이점은 Objects.equals()는 null 값을 안전하게 처리하는 반면 equals()는 null 객체와 함께 사용되면 NullPointerException이 발생한다는 점이다. 이러한 이유 때문에 Objects.equals를 사용하여 작성하였다.
while(true){
String text = sc.nextLine();
if (Objects.equals(text,"끝") ) {
break;
}
strList.add(text);
}
이후 7시부터 8시까지는 개인 과제를 진행했다.
Scanner sc = new Scanner(System.in);
System.out.println("첫 번째 숫자를 입력하세요: ");
int firstnum = sc.nextInt();
System.out.println("두 번째 숫자를 입력하세요: ");
int secondnum = sc.nextInt();
System.out.println("첫 번째 숫자: " + firstnum + "두 번째 숫자: " + secondnum); // 입력 받은 값이 변수에 잘 저장 되었는지 확인
charAt(0)
)sc.nextLine();
System.out.println("사칙연산 기호를 입력하세요: ");
String operator = String.valueOf(sc.nextLine().charAt(0));
System.out.println("첫 번째 숫자: " + firstnum + "두 번째 숫자: " + secondnum + "연산기호: " + operator); // 입력 받은 값이 변수에 잘 저장 되었는지 확인
sc.nextInt(); // 두 번째 숫자 <- 여기서 숫자를 누르고 엔터를 누르면 실제 입력값은 (숫자 + 엔터) 여기서 엔터는 \n이라는 것이 추가로 입력이 되는데 개행 문자 소비 없이 char operator = sc.nextLine().charAt(0); 이 코드가 실행되면은 sc.nextLine()에 남아있던 \n가 들어가면서 아무 문자열이 없는 상태에서 charAt(0)로 0 인덱스에 접근을 하면서 java.lang.StringIndexOutOfBoundsException: String index out of range: 0가 발생
즉, 숫자를 입력하고 엔터를 누른 것 때문에 저 오류가 발생하게 되고, 이 오류를 해결하기 위해 입력된 엔터 값을 소비하도록 sc.nextLine();가 필요함
switch (operator) {
case '+': // 덧셈 연산
result = firstnum + secondnum;
System.out.println("결과: " + result);
break;
case '-': // 뺄셈 연산
result = firstnum - secondnum;
System.out.println("결과: " + result);
break;
case '*': // 곱셈 연산
result = firstnum * secondnum;
System.out.println("결과: " + result);
break;
case '/': // 나눗셈 연산
if (secondnum > 0) {
result = firstnum / secondnum;
System.out.println("결과: " + result);
break;
} else {
System.out.println("나눗셈 연산에서 분모(두번째 정수)에 0을 입력할 수 없습니다.");
}
default:
}
while (true){
System.out.println("첫 번째 숫자를 입력하세요: ");
int firstnum = sc.nextInt(); //첫 번째 숫자
System.out.println("두 번째 숫자를 입력하세요: ");
int secondnum = sc.nextInt(); // 두 번째 숫자
sc.nextLine(); // 개행 문자 소비
int result = 0; // 초기화
System.out.println("사칙연산 기호를 입력하세요: ");
char operator = sc.nextLine().charAt(0);
switch (operator) {
case '+': // 덧셈 연산
result = firstnum + secondnum;
System.out.println("결과: " + result);
break;
case '-': // 뺄셈 연산
result = firstnum - secondnum;
System.out.println("결과: " + result);
break;
case '*': // 곱셈 연산
result = firstnum * secondnum;
System.out.println("결과: " + result);
break;
case '/': // 나눗셈 연산
if (secondnum > 0) {
result = firstnum / secondnum;
System.out.println("결과: " + result);
break;
} else {
System.out.println("나눗셈 연산에서 분모(두번째 정수)에 0을 입력할 수 없습니다.");
}
default:
}
System.out.println("더 게산하시겠습니까? (exit 입력 시 종료)");
String text = sc.nextLine();
if (text.equals("exit"))
break;
}