TIL 2023-10-26 boolean으로 for문 조회하기

2023. 10. 26. 21:10TIL

오늘은 팀프로젝트 하면서 배웠던 꿀팁을 쓰려고 한다.

 

밑의 메소드는 스캐너로 값을 받고

OrderList <- Oder <- Product 이 순으로 객체들을 리스트에 넣어줬는데

리스트 안의 오더를 돌면서 getNumber라는 오더의 주문 번호 필드를 반환하는 메소드가 스캐너의 값이랑 맞으면 지워주는 메소드다


      
private void waitingOrderInput() throws InterruptedException {
System.out.println("\n완료처리할 대기 주문 번호 입력\n");
int input = Integer.parseInt(scanner.nextLine());
List<Order> waitingOrderList = getWaitingOrderList();
for (Order currentOrder : waitingOrderList) {
if (input == currentOrder.getNumber()) {
currentOrder.changeWaitingToCompleted();
}
}
System.out.println("\n" + input + "번 주문 완료 처리 되었습니다.\n");
printWaitingOrder();
}

근데 여기서 문제가 있었다.

 

아무 값을 넣어도 걸러주는 기능이 없어서 5621을 입력하면

"5621번 주문 완료 처리 되었습니다"

하고 뜨는 것이였다.

 


      
private void waitingOrderInput() throws InterruptedException {
System.out.println("\n완료처리할 대기 주문 번호 입력\n");
int input = Integer.parseInt(scanner.nextLine());
List<Order> waitingOrderList = getWaitingOrderList();
for (Order currentOrder : waitingOrderList) {
if (input == currentOrder.getNumber()) {
currentOrder.changeWaitingToCompleted();
} else if (input != currentOrder.getNumber()) {
System.out.println("잘못된 값을 입력했습니다.");
}
}
System.out.println("\n" + input + "번 주문 완료 처리 되었습니다.\n");
printWaitingOrder();
}

 

이렇게 적어도


      
private void waitingOrderInput() throws InterruptedException {
System.out.println("\n완료처리할 대기 주문 번호 입력\n");
int input = Integer.parseInt(scanner.nextLine());
List<Order> waitingOrderList = getWaitingOrderList();
for (Order currentOrder : waitingOrderList) {
if (currentOrder.getStatus == OrderStatus.WAITING) {
if (input == currentOrder.getNumber()) {
currentOrder.changeWaitingToCompleted();
}
} else {
System.out.println("잘못된 값을 입력했습니다.")
}
}
System.out.println("\n" + input + "번 주문 완료 처리 되었습니다.\n");
printWaitingOrder();
}

 

이렇게 적어도 내가 원하는 대로 출력이 되지 않는다!! ( 저 위의 두 코드 말고도 엄청 많은 테스트를 했었다.. 6~8개 있었나.. 디버깅도 계속 해보느라 시간이 오래 걸렸다.. 지금은 기억나는대로 씀)

 

만약에 주문 번호가 (1,2,3)으로 세개고 내가 2를 지운다고 하면

 

잘못된 값을 입력했습니다.

2번 주문 완료 처리 되었습니다.

잘못된 값을 입력했습니다.

 

계속 이렇게 되는 거다.

 

이거 어떡하지...

 

계속 찾아보고 또 찾아봤다.

 

근데도 안 나왔다.

 

이건 분명히 기술적인 문제라기보다는 센스의 문제다..

 

팀원 분들께 여쭤보니 boolean으로 처리해주는 게 좋겠다고 하셨다.

 

boolean..?

 


      
private void waitingOrderInput() throws InterruptedException {
System.out.println("\n완료 처리 할 대기 주문 번호 입력\n");
int input = Integer.parseInt(scanner.nextLine());
List<Order> waitingOrderList = getWaitingOrderList();
boolean isRemoved = false;
for (Order currentOrder : waitingOrderList) {
if (input == currentOrder.getNumber()) {
currentOrder.changeWaitingToCompleted();
System.out.println("\n" + input + "번 주문 완료 처리 되었습니다.\n");
isRemoved = true;
break;
}
}
if (!isRemoved) {
System.out.println("잘못된 값을 입력했습니다.");
}
printWaitingOrder();
}

 

for문으로 전부다 보는데 만약 인풋값이랑 오더의 넘버가 일치하면 boolean을 true로 바꾸고 for문을 빠져나온다

다 돌았는데 없으면 잘못된 값을 입력했다고 출력한다

 

이렇게 간단한 문제였다니...

이런 센스들은 코딩 테스트에도 많이 쓰이고 개발자들이 자주쓰는 기술..? 센스..? 라고 한다.

 

오늘 상당히 머리 아프게 했던 이 메소드..

제목은 뭐라할지 모르겠음

절대 잊지 않으려고 적어본다.

저작자표시 (새창열림)

'TIL' 카테고리의 다른 글

TIL 2023-10-30 클래스간의 관계 결정하기  (0) 2023.10.30
TIL 2023-10-27 배열 선언 시 List와 ArrayList  (0) 2023.10.27
TIL 2023-10-25 static이란?? static 정리!  (0) 2023.10.25
TIL 2023-10-24 Github Pull Request 가이드, 팀 협업!!  (0) 2023.10.24
TIL 2023-10-23 Class별 역할 충실히하기 / 키오스크 프로젝트 완료  (0) 2023.10.23
'TIL' 카테고리의 다른 글
  • TIL 2023-10-30 클래스간의 관계 결정하기
  • TIL 2023-10-27 배열 선언 시 List와 ArrayList
  • TIL 2023-10-25 static이란?? static 정리!
  • TIL 2023-10-24 Github Pull Request 가이드, 팀 협업!!
wonow_
wonow_
꾸준히 성장하는 개발자 WONOW 입니다. 🤗
wonow_
wonow_
wonow_
전체
오늘
어제
  • 분류 전체보기
    • Language
      • JAVA
    • TIL
    • 코딩테스트
      • 프로그래머스
      • 백준
    • 프로젝트
      • JAVA
      • Spring
    • 기타
    • ERROR
      • Spring
    • CS
      • 알고리즘
      • DB
      • Kafka
    • 잡담
    • 활동
      • 척척박사

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 프로그래머스
  • 티스토리 꾸미기
  • 오블완
  • 문자열 붙여서 출력하기
  • 홀짝 구분하기
  • 나는바봉가봉가
  • 공부열심히하자
  • 문자열 돌리기
  • 티스토리챌린지

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.1
wonow_
TIL 2023-10-26 boolean으로 for문 조회하기
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.