1. 스코프 문제 - 블록 안에서 선언한 변수는 밖에서 못 쓴다
🕶️ 문제
} else if (categoryNumber >= 0 ...) {
Category selectCategory = categoryList.get(categoryNumber - 1);
}
// ❌ 여기서 selectCategory 사용 불가!
List<Product> productList = selectCategory.getProductList();
else if 블록 안에서 선언한 변수는 블록이 끝나는 순간 사라진다.
블록 밖에서 쓰려고 했더니 오류가 났다.
👓 해결
} else if (categoryNumber >= 0 ...) {
Category selectCategory = categoryList.get(categoryNumber - 1);
List<Product> productList = selectCategory.getProductList();
// ✅ 같은 블록 안에서 사용!
}
변수를 사용할 곳과 같은 블록 안에서 선언해야 한다.
2. 주소값 출력 - 객체를 그냥 출력하면 주소값이 나온다
🕶️ 문제
List<Product> products = category.getProductList();
System.out.println(products);
// ❌ 출력 결과: [Product@3f99bd52, Product@4f023edb ...]
객체나 리스트를 그냥 println으로 출력하면 주소값이 나온다.
👓 해결
for (Product product : products) {
System.out.println(product.getProductName()); // ✅ 데이터 출력
}
리스트 안의 데이터를 꺼내려면 for-each문으로 하나씩 꺼내서 메서드로 출력해야 한다.
3. get() 인덱스 - if else 난리치다가 한 줄로 해결
🕶️ 문제
if (categoryNumber == 1) {
categoryList.get(0);
} else if (categoryNumber == 2) {
categoryList.get(1);
} else if (categoryNumber == 3) {
categoryList.get(2);
}
// 카테고리가 늘어날수록 else if도 끝없이 늘어남 😂
👓 해결
categoryList.get(categoryNumber - 1);
// ✅ 한 줄로 해결!
입력값과 인덱스 사이에 규칙이 있었다.
1 입력 → get(0)
2 입력 → get(1)
3 입력 → get(2)
항상 -1 차이! 이걸 깨닫는 순간 코드가 확 줄었다.
4. List 타입 혼동 - Category인데 Product를 넣으려 했다
🕶️ 문제
// 의류 상품을 Category로 만들려 했다
Category aloBag = new Category("Alo Bag", 67000, ...); // ❌
Category는 카테고리를 표현하는 클래스인데 상품을 Category로 만들려 했다.
👓 해결
// 의류도 상품이니까 Product로 만들어야 한다
Product aloBag = new Product("Alo Bag", 67000, ...); // ✅
클래스의 역할을 정확히 구분해야 한다:
Product→ 개별 상품Category→ 상품들의 묶음
5. return 여러 개 - 메서드 하나에 return을 여러 개 쓰려 했다
🕶️ 문제
public getList() {
return name; // 여기서 끝남
return price; // ❌ 실행 안 됨
return explain; // ❌ 실행 안 됨
}
하나의 메서드에서 여러 값을 한 번에 반환하려 했다.
👓 해결
// 필드마다 getter 메서드를 따로 만들어야 한다
public String getProductName() {
return productName; // ✅
}
public int getProductPrice() {
return productPrice; // ✅
}
return은 하나의 메서드에서 하나만 쓸 수 있다.
값마다 getter 메서드를 따로 만들어야 한다.
오류가 나도 당황하지 말자. 하나씩 뜯어보면 다 이유가 있다.
튜터님께 배운 오류 검사 방법 "---------------ㅎㅎ"