❗어떤 문제가 있었는지
- 전일 진행하고 있었던 스파르타 자판기 과제에 있어 코드 구성 및 실행 결과는 올바르게 도출했으나, 코드가 보다 간소화되지 못하게 구성한 상황이 발생하였음
더보기더보기
기존 작업했던 문항
package quest; import java.util.HashMap; import java.util.Map; import java.util.Scanner; public class BeverageMachineEx { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); Map<String, Integer> beverages = Map.of ( "사이다", 1700, "콜라", 1900, "식혜", 2500, "솔의눈", 3000 ); System.out.println("=================== 메뉴판 ==================="); for (Map.Entry<String, Integer> beverage : beverages.entrySet()) { // 여기에 System.out.println 문을 적어주세요 System.out.println(beverage.getKey() + " : " + beverage.getValue()); } System.out.print("주문하실 음료를 선택해주세요: "); String userChoice = scanner.nextLine(); if (beverages.containsKey(userChoice)) { System.out.print("지불하실 금액을 입력하세요: "); int coin = scanner.nextInt(); if (coin < beverages.get(userChoice)) { System.out.println("돈이 부족합니다."); } else { int remain = coin - beverages.get(userChoice); System.out.println("잔액은 " + remain + "원 입니다."); } } else { System.out.println("올바른 상품을 골라주세요."); } // 이중 if문(중첩 if문) 으로 인해 코드가 보다 간결해보이지 않는 상황이 있음 } } - 단어 맞추기 게임(진행중)
- 배열 선언과 이전에 사용했던 Random 함수의 활용까지는 이해했으나 전반적인 메서드 구성에 있어 어려움이 있었음
📝 내가 시도해본 것들
- 중첩 if 문에 대해서 단일 if문으로 변경할 수 있는 조건에 대해서 고민을 해보게 되었음
- 조건에 들어가야 하는 부분은 총 2가지로 확인할 수 있음
- 메뉴판의 상품명이 아닌 상품을 입력하였을 때 -> 종료
- 상품의 가격보다 적은 금액을 지불하였을 때 -> 종료
- 조건에 들어가야 하는 부분은 총 2가지로 확인할 수 있음
💡어떻게 해결했는지
- 해결방법 1. 입력 조건을 만족하지 않을 때 return문을 통한 프로그램 활용 및 조건문 간소화
System.out.print("주문하실 음료를 선택해주세요: "); String userChoice = scanner.nextLine(); if (!beverages.containsKey(userChoice)) { System.out.println("올바른 상품을 골라주세요."); return; } int price = beverages.get(userChoice); System.out.print("지불하실 금액을 입력하세요: "); int coin = scanner.nextInt(); if (coin < price) { System.out.println("돈이 부족합니다."); return; } else { int remain = coin - beverages.get(userChoice); System.out.println("잔액은 " + remain + "원 입니다."); } - 해결방법 2. 메서드 선언
- 메서드 선언을 통하여 조건문의 실행은 메서드 내에서만 진행되도록 구성함
System.out.print("주문하실 음료를 선택해주세요: "); String userChoice = scanner.nextLine(); processOrder(scanner, beverages, userChoice); } private static void processOrder(Scanner scanner, Map<String, Integer> beverages, String userChoice) { if (!beverages.containsKey(userChoice)) { System.out.println("올바른 상품을 골라주세요."); return; } int price = beverages.get(userChoice); System.out.print("지불하실 금액을 입력하세요: "); int coin = scanner.nextInt(); if (coin < price) { System.out.println("돈이 부족합니다."); return; } int remain = coin - price; System.out.println("잔액은 " + remain + "원 입니다."); }
- 메서드 선언을 통하여 조건문의 실행은 메서드 내에서만 진행되도록 구성함
👍무엇을 새롭게 알았는지
- 조건문의 구성에 있어서 중첩 조건문, 단일 조건문, 메서드 호출을 통한 조건문의 간소화 등 상황에 맞는 코드 구성 방식을 활용할 수 있도록 경험치를 쌓아 나아가고 있음
- Character.isLetter() 의 경우는 글자가 맞는지에 따라 참(true), 거짓(false) 를 반환해주는 함수
- 메서드 구성을 통한 코딩 관리 이전에 가장 간단한 방법으로 생각한 바를 쭉 코딩해 나아가 볼 것
- 중간중간 실행 결과 확인을 통해 내가 나아가고자 하는 방향과 맞게 프로그래밍이 되고 있는지 확인하는게 중요함
- 메서드 구성을 통한 코딩 관리 이전에 가장 간단한 방법으로 생각한 바를 쭉 코딩해 나아가 볼 것
'내배캠 끄적끄적 > Today I Learned' 카테고리의 다른 글
| 250829 TIL & 사전캠프 마무리 (15) | 2025.08.29 |
|---|---|
| 250828 TIL (3) | 2025.08.28 |
| 250826 TIL (4) | 2025.08.26 |
| 250825 TIL (4) | 2025.08.25 |
| 250822 TIL (0) | 2025.08.22 |