Q1. 점수에 맞는 등급 출력하기
문제 상황
1. 타입 설정 오류
2. else 범위 지정 오류
원인 상황 진단과 해결
1. 타입 설정 오류
원인: 2번 줄 score의 초기 값을 지정할 때 타입 선언을 누락함 -> 오류 발생
해결: 숫자는 int 타입을 사용하며, 모든 변수는 반드시 타입을 선언해 줘야 한다는 것을 되새기며 문제 해결
2. else 범위 지정 오류
원인: 8번 줄 else에도 (score <80)라는 범위를 지정함 -> 오류 발생
해결: else는 if와 else if의 조건이 모두 거짓일 때 실행되므로 조건을 따로 설정하지 않음, else 조건 삭제 진행
[최종 코드]

Q2. 가상의 쇼핑몰에서 결제 금액을 계산하는 프로그램을 만들기
- 구매자가 장바구니에 담은 상품들의 전체 금액을 계산합니다.
- 총금액이 20,000원 이상일 경우, 10% 할인을 적용합니다.
- 최종적으로 구매자가 결제해야 하는 금액을 출력합니다.
문제 상황
1. 작성 순서와 계산 로직 오류
2. Map에서 값 추출 시 안정성 문제
3. 할인율 계산 시 데이터 타입과 출력 값의 소수점 문제
원인 상황 진단과 해결
1. 작성 순서와 계산 로직 오류
원인 1: 할인율 계산이 총액 계산보다 먼저 실행됨 -> 총액을 계산하는 for 반복문보다 먼저 할인율 계산이 실행되어 총액은 항상 0
해결1 : 총액 계산 후 할인율 계산으로 순서 변경
원인 2: 할인 금액만 출력하고 최종 결제 금액을 계산하지 않음 -> 문자열에 할인 계산식을 포함
해결 2: 할인율 계산을 따로 빼서 discountedprice라는 새로운 변수에 할인율 계산식 저장
2. Map에서 값 추출 시 안정성 문제
원인: Map에서 값을 가져올 때 가격이 없을 경우 null을 반환할 수 있어 오류 발생
해결: if(price.containsKey(item))을 사용하여 해당 상품이 가격 맵에 존재하는지 먼저 확인,! 추가하여 null이 아님을 명시
3. 할인율 계산 시 데이터 타입과 출력 값의 소수점 문제
원인 1: 할인율 계산 시 int로 타입을 지정해 오류 발생
해결1: 할인율은 소수점으로 나오기 때문에 double 타입을 사용하여 재지정
원인 2: 할인율 계산 변수를 double로 지정했기 때문에 출력 값도 소수점으로 출력
해결 2: 출력값은 정수로 나오게 하기 위해 변수.round() 추가
[첫 코드 작성(왼), 수정 코드(오)]


[최종 코드]

Q3. 가상의 복권 프로그램을 만들기
- 1~45까지의 숫자중 중복되지 않게 6개의 번호를 뽑아 1장의 복권을 발급합니다.
- 발급한 복권 번호를 지정된 당첨 번호와 비교하여 당첨 여부를 확인합니다.
- 다음 당첨 조회를 위해 복권 번호를 초기화합니다.
문제 상황
1. 로또 번호 중복 문제
2. 컬렉션 타입 지정 오류
3. 랜덤 범위 설정 오류
원인 상황 진단과 해결
1. 로또 번호 중복 문제
원인: 로또 번호는 중복 없이 생성되어야 하는데 중복을 허용하는 List 사용
해결: 중복을 허용하지 않는 Set을 사용하여 다시 작성
2. 컬렉션 타입 지정 오류
원인: 당첨 번호 win의 컬렉션을 List로 잘못 지정하여, Set 타입 때 사용 가능한 .intersection이 인식을 못함
해결: 변수.intersection은 두 Set의 겹치는 값들만 모아서 새로운 Set을 만들어 주는 함수이므로, win 컬렉션을 Set로 변경
3. 랜덤 범위 설정 오류
원인: random.nextInt(45)는 0부터 44까지 숫자를 반환하므로 로또 번호가 0도 포함
해결: random.nextInt(45)에 생성된 값에 1을 더하여 1~45까지 범위를 조정
[문제의 코드]

결론 및 학습 내용
이번 과제를 통해 작은 논리적 실수가 예상치 못한 오류를 발생시킬 수 있다는 점을 느끼게 되었다.
해당 오류들을 하나씩 고민하고 해결해 가면서, Dart 언어의 기본적인 구조의 사용법과 핵심 로직 처리 방식을 실전에 대입하여 학습하였고 동작 원리를 이해할 수 있었다.
특히, 데이터 타입 변환의 필요성과 코드 실행 순서 등의 중요성을 직접 경험하며 논리적인 오류 해결과 코드의 효율적인 작성법에 대해 배울 수 있어 앞으로 복잡한 로직을 설계할 때도 이 경험을 바탕으로 코드 작성을 해나갈 예정이다.
'플러터 앱 개발' 카테고리의 다른 글
| Chapter 4. Dart 기본 문법 C - 조건문과 반복문+주석 (0) | 2025.12.08 |
|---|---|
| Chapter 3. Dart 기본 문법 B - 연산자 (0) | 2025.12.08 |
| Chapter 2. Dart 기본 문법 A - 변수와 데이터 타입 (0) | 2025.12.02 |
| Chapter 1. Dart 개발 환경 구성 (3) | 2025.12.01 |
| Chapter 0. 프로그래밍 언어의 종류 (0) | 2025.12.01 |