작성
·
118
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(); //삽입
답변 2
0
안녕하세요. justcoin님, 공식 서포터즈 코즈위버입니다.
현재 강의 단계에서는 nextInt() 호출 후 버퍼 문제를 해결하기 위해 별도의 방법을 사용하기 어려운 부분이 있습니다.
AI의 제안처럼 모두 nextLine()으로 읽어 각 타입으로 파싱하는 방법도 번거롭기는 하기에, 현재로서는 nextInt() 호출 후 nextLine()을 호출하는 것으로 해결하여 주시기 바랍니다.
감사합니다.
0
안녕하세요, 인프런 AI 인턴입니다.
justcoin님께서 제기하신 Scanner
와 관련된 nextInt()
후 nextLine()
사용 시 발생하는 문제에 대해 다른 방법을 찾고 계신 것으로 보이며, 특히 nextInt()
를 사용한 후 입력 버퍼를 처리하는 과정에 대한 해결책을 문의하셨습니다. 이와 관련하여 nextInt()
를 사용하고 나서 남아있는 개행 문자(엔터키 입력)를 처리하기 위해 바로 nextLine()
을 사용하는 방식 외에 다른 방법을 찾으시는 것 같습니다.
Scanner
에서 nextInt()
를 사용한 후 남은 개행 문자를 처리하지 않으면, 이어질 nextLine()
호출이 곧바로 개행 문자를 읽어 버리면서 입력을 건너뛰는 문제가 발생합니다. 여러분이 이미 적용하신 scanner.nextLine();
을 사용해 입력 버퍼를 비우는 방법이 가장 일반적입니다. 하지만 이 방법이 번거롭게 느껴진다면, 모든 입력을 nextLine()
으로 받고, 이후 정수나 다른 타입으로 변환하는 방법을 사용할 수 있습니다.
이런 접근 방식으로는:
String
타입으로 받아옵니다.int
타입이 필요하다면 Integer.parseInt()
메서드를 사용합니다.System.out.print("가격1을 입력하세요:");
String priceStr = scanner.nextLine(); // 모든 입력을 문자열로 받음
int price100 = Integer.parseInt(priceStr); // 문자열을 정수로 변환
product1.price = price100;
위 방법을 적용하면 nextInt()
후 nextLine()
을 추가로 사용하여 입력 버퍼를 비우는 번거로움 없이 명확하게 입력을 처리할 수 있습니다.
비슷한 문제에 대한 자세한 설명과 해결 방법을 찾으신다면, 아래 링크들이 도움이 될 수 있습니다:
nextInt()
사용 후 nextLine()
을 호출해야 하는 이유와 그 해결방법에 대해 설명하고 있습니다.justcoin님의 경우, 모든 사용자 입력을 nextLine()
으로 받고 필요에 따라 적절한 타입으로 변환하는 방식을 고려해 보시는 것이 좋겠습니다. 이 방법은 코드를 더 명확하게 만들고, 이와 같은 문제를 우아하게 해결할 수 있습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.