inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음

문제와 풀이4

문제와 풀이4 문제점

30

하나일 (해와별을품은아빠)

작성한 질문수 1

0

[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)

[질문 내용]
현재 숫자로 입력 옵션을 처리하는 것은 문제가 있습니다. 만일, 실수로 문자를 입력 할 경우 에러가 발생하여 팅겨버리게 됩니다. 이것은 버그라고 판단 될 수 있습니다. 또한, "올바른 옵션을 선택해 주세요"를 처리하지 못하게 됩니다. 따라서 문자로 처리해야 아무런 문제가 없이 정상적으로 해당 프로그램이 작동합니다. 이점을 참고하여 주세요.

package scanner.ex4; import java.util.Scanner; public class ScannerEx2 { public static void main(String[] args) { Scanner input = new Scanner(System.in); int totalCost = 0; while (true){ System.out.print("1: 상품 입력, 2: 결재, 3: 프로그램 종료 : "); String option = input.nextLine(); if(option.equals("1")){ System.out.print("상품명을 입력하세요 : "); String name = input.nextLine(); System.out.print("상품의 가격을 입력하세요 : "); int price = input.nextInt(); System.out.print("구매 수량을 입력하세요 : "); int count = input.nextInt(); input.nextLine(); totalCost += price count; System.out.println("상품명:" + name + ", " + "가격:" + price + "원, " + "수량:" + count + ", " + "소계:" + (price count) + "원"); System.out.println("=================================================="); } else if (option.equals("2")) { System.out.println("총 비용 : " + totalCost + "원"); totalCost = 0; } else if (option.equals("3")) { System.out.println("프로그램을 종료합니다."); break; } else { System.out.println("올바른 옵션을 선택해 주세요."); } } } }

java 객체지향

답변 2

0

OMG

안녕하세요. 하나일 (해와별을품은아빠)님, 공식 서포터즈 OMG입니다.

본 강의의 난이도와 수강생 분들이 프로그래밍을 입문하는 수준임을 고려하여

말씀하신 예외처리까지는 고려되어 있지 않고, 문제의 요구사항만을 만족하면 문제를 잘 해결하신 것으로 간주하였다고 보시면 될 것 같습니다.

물론 실무에서는 예외처리가 고려되어야 하는게 맞습니다 😀

감사합니다.

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다.

해와별을품은아빠님께서 “문제와 풀이4” 강의의 문제점을 지적해 주셨군요. 주신 코드는 사용자 입력 값을 처리할 때, 숫자 입력을 문자로 받은 후 비교하여 처리하는 방법을 사용하고 있습니다. 이는 문자열을 통해 입력값을 받음으로써 잘못된 값을 입력했을 때 발생할 수 있는 문제를 방지하는 좋은 방법입니다.

Java에서 숫자를 입력받을 때 바로 숫자로 변환하지 않고 문자열로 받아 비교하면, 사용자가 의도치 않게 문자를 입력했을 때 발생할 수 있는 에러를 막을 수 있습니다. 사용자가 잘못된 옵션을 입력했을 경우에도 에러 없이 “올바른 옵션을 선택해 주세요.“라는 메시지를 출력할 수 있어 프로그램의 안전성이 증가합니다.

관련 질문과 답변은 다음 링크에서 참고하실 수 있습니다:

이러한 코드를 통해 프로그램이 더 안정적이고 사용자가 다양한 입력 상황에서 프로그램을 쉽게 사용할 수 있게 됩니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

문제풀이 시간마다 방향성

0

30

2

피라미드 문제 풀이

0

67

1

ScannerWhile3 예제 코드 질문

0

49

1

짝수 출력 문제 질문

0

46

1

Array 연습 문제 5번 질문입니다.

0

81

2

단축어가 이상하게 나옵니다

0

126

2

Sql강의

0

82

1

array 문제풀이 2번 질문입니다.

0

53

1

JAVA입문 / 메서드편 문제와 풀이2

0

44

1

인텔리제이 무료버젼이 통합되었다는데 30일 무료버전이면 어떻게 사용하나요

1

767

3

OperationEx3에서 꼭 boolean을 써야 하나요?

0

56

1

for, while문 작성

0

63

1

68강 ArrayEx6 클래스 질문

0

56

1

IO.println(String.format("Hello and welcome!"));

0

139

2

소스코드 실행이 안돼요

0

114

2

메서드 문제와 풀이2에서 마지막 문제 이렇게 풀어도 괜찮은 건가요..?

0

77

1

While과 for 스코프 질문

0

59

1

김영한 java 입문 설치 질문

0

135

2

버퍼문제?

0

50

1

for문 피라미드 찍는거 질문

0

74

1

21버전이 없고, 강의 메뉴얼 확인해보면 된다는 김영한 선생님 답변 확인했습니다.

0

366

1

3번 문제 질문 있습니다.

0

93

2

sout에는 변수가 하나만 들어가야 하나요?

0

131

1

21버전이 없어요 ㅠ

0

317

2