inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

김영한의 실전 자바 - 기본편

정리

ProductOrderMain 질문 드려요

193

justcoin

작성한 질문수 8

0

 학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.


1. 강의 내용과 관련된 질문을 남겨주세요.
2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.
(자주 하는 질문 링크: https://bit.ly/3fX6ygx)
3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.
(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)

질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.
=========================================
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예/아니오)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)

[질문 내용]
기존 정답에 Scanner 기능을 추가 했는데 nextInt()의 빈공간 데이타 때문에 nextLine() 입력 오류가 나서 이런식으로 하니 오류는 잡았고 정상 작동 되었습니다. 이 방법 말고 다른 방법은 없을까요?

매번 nextInt 뒤에 scanner.nextLine()을 넣어야 하는건지..?

int total =0;

ProductOrder product1 = new ProductOrder();
System.out.print("상품명1을 입력하세요: ");
String name = scanner.nextLine();
product1.productName =  name;

System.out.print("가격1을 입력하세요:");
int price100 = scanner.nextInt();
product1.price = price100;
scanner.nextLine();  //삽입

System.out.print("수량1을 입력하세요:");
int quantity100 = scanner.nextInt();
product1.quantity = quantity100;
scanner.nextLine();  //삽입


ProductOrder product2 = new ProductOrder();
System.out.print("상품명2을 입력하세요:");
String name2 = scanner.nextLine();
product2.productName = name2;



System.out.print("가격2을 입력하세요:");
int price200 = scanner.nextInt();
product2.price = price200;
scanner.nextLine();  //삽입


System.out.print("수량2을 입력하세요:");
int quantity200 = scanner.nextInt();
product2.quantity = quantity200;
scanner.nextLine();  //삽입



ProductOrder product3 = new ProductOrder();
System.out.print("상품명3을 입력하세요");
String name3 = scanner.nextLine();
product3.productName = name3;


System.out.print("가격3을 입력하세요:");
int price300 = scanner.nextInt();
product3.price = price300;  //삽입
scanner.nextLine();

System.out.print("수량3을 입력하세요:");
int quantity300 = scanner.nextInt();
product3.quantity = quantity300;
scanner.nextLine();  //삽입

java 객체지향

답변 2

0

나무늘보

안녕하세요. justcoin님, 공식 서포터즈 코즈위버입니다.

현재 강의 단계에서는 nextInt() 호출 후 버퍼 문제를 해결하기 위해 별도의 방법을 사용하기 어려운 부분이 있습니다.

AI의 제안처럼 모두 nextLine()으로 읽어 각 타입으로 파싱하는 방법도 번거롭기는 하기에, 현재로서는 nextInt() 호출 후 nextLine()을 호출하는 것으로 해결하여 주시기 바랍니다.

감사합니다.

0

인프런 AI 인턴

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

justcoin님께서 제기하신 Scanner와 관련된 nextInt()nextLine() 사용 시 발생하는 문제에 대해 다른 방법을 찾고 계신 것으로 보이며, 특히 nextInt()를 사용한 후 입력 버퍼를 처리하는 과정에 대한 해결책을 문의하셨습니다. 이와 관련하여 nextInt()를 사용하고 나서 남아있는 개행 문자(엔터키 입력)를 처리하기 위해 바로 nextLine()을 사용하는 방식 외에 다른 방법을 찾으시는 것 같습니다.

Scanner에서 nextInt()를 사용한 후 남은 개행 문자를 처리하지 않으면, 이어질 nextLine() 호출이 곧바로 개행 문자를 읽어 버리면서 입력을 건너뛰는 문제가 발생합니다. 여러분이 이미 적용하신 scanner.nextLine();을 사용해 입력 버퍼를 비우는 방법이 가장 일반적입니다. 하지만 이 방법이 번거롭게 느껴진다면, 모든 입력을 nextLine()으로 받고, 이후 정수나 다른 타입으로 변환하는 방법을 사용할 수 있습니다.

이런 접근 방식으로는:

  1. 사용자의 모든 입력을 String 타입으로 받아옵니다.
  2. 필요한 경우, 적절한 타입으로 변환합니다. 예를 들어, int 타입이 필요하다면 Integer.parseInt() 메서드를 사용합니다.
System.out.print("가격1을 입력하세요:");
String priceStr = scanner.nextLine();  // 모든 입력을 문자열로 받음
int price100 = Integer.parseInt(priceStr);  // 문자열을 정수로 변환
product1.price = price100;

위 방법을 적용하면 nextInt()nextLine()을 추가로 사용하여 입력 버퍼를 비우는 번거로움 없이 명확하게 입력을 처리할 수 있습니다.

비슷한 문제에 대한 자세한 설명과 해결 방법을 찾으신다면, 아래 링크들이 도움이 될 수 있습니다:

justcoin님의 경우, 모든 사용자 입력을 nextLine()으로 받고 필요에 따라 적절한 타입으로 변환하는 방식을 고려해 보시는 것이 좋겠습니다. 이 방법은 코드를 더 명확하게 만들고, 이와 같은 문제를 우아하게 해결할 수 있습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.

현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏

추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

질문있습니다

0

27

1

1번 문제 질문입니다.

0

32

1

음악플레이어 문제 중 코드질문

0

26

1

9장 상속 문제와 풀이 질문

0

38

1

강의 자료에 사소한 오타가 있습니다.

0

49

2

매서드 참조값 반환??

0

66

1

접근제어자 - 쇼핑카트 문제에서 상품출력 부분 메서드

0

70

1

자바 기본편 - .(dot)에 관한 질문입니다!

0

85

1

공부방법

0

74

2

상속관계에서 멤버 변수는 오버라이딩 되는 개념이 아닌가요?

0

82

1

static method 질문

0

66

1

캡슐화 문제풀이 ShoppingCart 요구사항에 문제가 있어보입니다. 피드백 주세요

0

97

1

Method1에서 Student 객체

0

74

1

3강 18. null 질문

0

69

1

this 와 super의 호출 순서는 부모-자식관계 떄문만인가요?

0

75

1

팩토리 메서드 패턴과 일반 생성자 사용의 장단점

0

97

1

문의

0

104

1

9장 상속 문제와 풀이 부분 궁금한게 있어서 질문드립니다

0

90

1

상속과 그에 따른 메모리 구조 질문

0

62

1

call메소드에서 멤버에 접근하는 방식을 이해 못 했습니다

0

74

1

수강기한

0

136

1

기본편 객체지향 프로그래밍에 대한 정의

0

87

1

섹션10 상속 메모리 구조 및 문제 관련 질문

0

87

1

추가 지식 학습

0

152

2