240429
오늘의 학습
● 1. 계산기 과제 Lv.1
● 2. 계산기 과제 Lv.2
1. 계산기 과제 풀기
오늘 계산기 만드는 과제를 하면서 유연하게 문제를 하나 해결한 부분이 있다.
처음에는 while을 통한 무한 반복문에서 빠져나갈 방법을 생각하다가 "break" 키워드가 생각이나서 break를 넣었다.
while(true){
System.out.println("더 계산하시겠습니까? (exit입력 시 종료)");
String exitMsg = sc.nextLine();
if(exitMsg.equals("exit")){
break;
}
}
위의 코드로 만들게 되었는데 뭔가 반복문의 유연함이 부족한 것 같아서 반복문의 조건을 수정하기로 했다.
반복의 조건을 종료 시 초기화를 시켜 나가는 것으로 생각을 전환하게 되었다.
boolean turnOnOff = true; // 변수로 세팅을해서 유연함을 더했다.
while(turnOnOff){
System.out.println("더 계산하시겠습니까? (exit입력 시 종료)");
String exitMsg = sc.nextLine();
if(exitMsg.equals("exit")){
turnOnOff = false;
}
}
변수로 세팅을하여 반복 조건으로 넣어줬더니 훨씬 유연해졌다. 근데 밑에 종료 조건이나 if문을 보면 전보다 길어 졌다.
여기서 if문을 어떻게 하면 줄일 수 있을지 혼자서 고민을 많이 했다. 그러다가 문뜩 아이디어가 하나 떠올랐다.
boolean turnOnOff = true; // 변수로 세팅을해서 유연함을 더했다.
while(turnOnOff){
System.out.println("더 계산하시겠습니까? (exit입력 시 종료)");
turnOnOff = !sc.nextLine().equals("exit");
// 입력값 == "exit" => true반환 즉, false를 반환받기 위해 !(not)사용
}
생각해보니까 equals는 반환타입이 논리타입(boolean)이므로 따로 if문을 써서 직접 넣어줄 필요가 없었다.
그리고 false를 반환하기 위해 앞에 논리연산자를 하나 붙혀주었다. 이로써 무한반복 while문의 보강은 끝났다.
// before
while(true){
System.out.println("더 계산하시겠습니까? (exit입력 시 종료)");
String exitMsg = sc.nextLine();
if(exitMsg.equals("exit")){
break;
}
}
// after
boolean turnOnOff = true;
while(turnOnOff){
System.out.println("더 계산하시겠습니까? (exit입력 시 종료)");
turnOnOff = !sc.nextLine().equals("exit");
}
제일 처음 코드와 마지막 코드의 before & after이다.
(확실히 코드가 유연해지고 가독성 또한 좋아진걸 확인할 수 있다. 그리고 무엇보다 코드가 깔끔해져서 기분이 좋다.)
# 오늘의 회고
오늘은 과제를 정신없이 하다가 실수로 TIL을 쓰는 것을 까먹었다.. 늦었지만 지금이라도 써서 올려야겠다.!
'내일배움캠프 Spring 5기' 카테고리의 다른 글
내일배움캠프 13일차 TIL - 확장&상속(Extends) (1) | 2024.05.01 |
---|---|
내일배움캠프 12일차 TIL - 객체 배열(ObjectArray) (0) | 2024.04.30 |
내일배움캠프 10일차 TIL - 예외(Exception) (0) | 2024.04.25 |
내일배움캠프 9일차 TIL - 클래스(Class) (1) | 2024.04.25 |
내일배움캠프 8일차 TIL - 컬렉션(Collection) (0) | 2024.04.24 |