250827 TIL

2025. 8. 27. 18:02·내배캠 끄적끄적/Today I Learned

 

❗어떤 문제가 있었는지

  • 전일 진행하고 있었던 스파르타 자판기 과제에 있어 코드 구성 및 실행 결과는 올바르게 도출했으나, 코드가 보다 간소화되지 못하게 구성한 상황이 발생하였음
    더보기
    더보기

    기존 작업했던 문항

    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가지로 확인할 수 있음
      • 메뉴판의 상품명이 아닌 상품을 입력하였을 때 -> 종료
      • 상품의 가격보다 적은 금액을 지불하였을 때 -> 종료
        더보기
        더보기

        if (beverages.containsKey(userChoice))

         

         


💡어떻게 해결했는지

  • 해결방법 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
'내배캠 끄적끄적/Today I Learned' 카테고리의 다른 글
  • 250829 TIL & 사전캠프 마무리
  • 250828 TIL
  • 250826 TIL
  • 250825 TIL
stark77
stark77
하마의 IT 자기개발 이모저모, 백엔드 개발자로 거듭나기
  • stark77
    하마의 개발자 성장일기
    stark77
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 컴퓨터구조와 운영체제
        • 컴퓨터구조
        • 운영체제
      • SQL 기초
      • Spring
        • 백엔드 기초
        • Spring 실습
      • JAVA
        • Java 실습
      • HTML&CSS
        • HTML&CSS 실습
      • Git&GitHub
        • Git&GitHub 실습
      • 내배캠 끄적끄적
        • Today I Learned
      • 유용한 툴 및 사이트 정리
      • 취미
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    BEAN
    thymleaf
    String.format
    객체지향
    JPA
    Stomp
    다형성
    algorithm
    백엔드 기초다지기
    java
    네트워크 기초
    MVC
    SpringSecurity
    HTML&CSS
    RestTemplate
    git
    Github
    for문
    Til
    백엔드 기초
    경합조건과 교착상태
    객체지향프로그래밍
    Java 문법기초
    jsp
    Spring
    Spriingboot
    WebSocket
    웹소켓
    실시간 데이터 처리
    프로세스와 쓰레드
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
stark77
250827 TIL
상단으로

티스토리툴바