향상된 for문 공부

최길중·2026년 1월 21일

향상된 for 문을 사용하면서 list를 추가해서 작성하는 게 좀 어렵더라고요. 그래서 몇 줄 적는 데 되게 오래 걸렸습니다.

menu는 매 반복마다
1번째: "김밥"
2번째: "라면"
3번째: "떡볶이"
처럼 바뀜

즉, List가 만들어져 있는 상태에서 가져온다 = for (String menu : menus) 이 한 줄이 끝임

for (Product p : basket) {
    // p 사용
}
  • basket에서 요소를 하나 꺼내서
  • 그 요소를 p에 담고
  • {} 안을 실행
  • 다음 요소 꺼내서 반복
  • 끝까지 돌면 종료

여기서 “p 타입이 왜 Product냐?”

List<Product> basket = new ArrayList<>();

이렇게 되어서 Product는 기본형이 아닌 클래스 타입 이여서 for-each에서 사용 되는 거임

->햇갈려서 공부한 내용


public class shoppingBasket

    // 중복 없애기
    public List<Product> getOverLab() {
        List<Product> overlab = new ArrayList<>();
        for (Product product : products) {
            boolean run = false;
            for (Product product1 : overlab) {
                if (product1 == product) {
                    run = true;
                    break;
                }
            }
            if (!run) overlab.add(product);
        }
        return overlab;
    }
    // 재고 차감
    public int getCount(Product c) {
        int count = 0;
        for (Product product : products) {
            if (product == c) count++;
        }
        return count;
    }

public class CommerceSystem

    private void systemDeductStock() {
        for (Product p : basket.getOverLab()){
            int cnt = basket.getCount(p);
            p.setInventory(p.getInventory()-cnt);
        }
    }

놀랍게도 10시간 머리 쥐어뜯으면서 작성한 게 이게 다입니다. 그래도 아직 잘 모른다는 게 아쉽습니다.

(중복 없애기 에서)
중간에 if (!run) overlab.add(product); 이 구문에서! 빼먹고 통과가 돼서 차감이 안되는 일이 발생했습니다. 코드를 한 6번 정도 지우고 쓰고 하다가 해결했습니다.

profile
개발자가 되고 싶어요

0개의 댓글