ScannerWhileEx4 질문입니다.
255
7 asked
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.
1. 강의 내용과 관련된 질문을 남겨주세요.
2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.
(자주 하는 질문 링크: https://bit.ly/3fX6ygx)
3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.
(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)
질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.
=========================================
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예/아니오)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)
[질문 내용]
강사님은 클래스 시작할 때 totalCost만을 변수선언하시고, 계산을 통해 대입을 하셨습니다. 그러나 전sum이라는 변수를 하나 더 선언해서 거기에다가 대입을 해서 프로그램을 짜봤는데요, 강사님이 만든 코드와 제가 만든 코드를 비교했을 때, 변수를 하나 더 선언하게 되면 비효율적인 코드가 될 수 있을까요? 밑에는 제가 짠 코드입니다.
package scanner.ex;
import java.util.Scanner;
public class ScannerWhileEx4 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int sum = 0;
int totalPrice = 0;
while (true) {
System.out.println("1: 상품 입력, 2: 결제, 3: 프로그램 종료" );
int num = scanner.nextInt();
scanner.nextLine();
if (num == 1) {
System.out.print("상품명을 입력하세요: ");
String name = scanner.nextLine();
System.out.print("상품의 가격을 입력하세요: ");
int price = scanner.nextInt();
System.out.print("구매 수량을 입력하세요: ");
int quantity = scanner.nextInt();
sum = price * quantity;
System.out.println("상품명:" + name + " 가격:" + price + " 수량:" + quantity + " 합계:" + sum);
totalPrice += sum;
} else if (num == 2) {
System.out.println("총 비용: " + totalPrice);
totalPrice = 0;
} else if (num == 3) {
System.out.println("프로그램을 종료합니다.");
break;
} else {
System.out.println("올바른 옵션을 선택해주세요.");
}
}
}
}
Answer 2
0
안녕하세요, 인프런 AI 인턴입니다.
상우님의 질문은 ScannerWhileEx4 예제에 관한 변수 선언 및 코드 효율성에 대한 것으로 보입니다. 상우님께서는 totalCost와 sum 두 변수를 사용하여 프로그램을 작성하셨으며, 이 방식이 강사님의 코드와 비교하여 비효율적인지 여부에 대해 궁금해하고 있습니다.
이와 유사한 질문에 대한 답변이 이전에 있었는데, 그 중 하나는 “훈련_문제(ScannerWhileEx4)”에 대한 것입니다. 이 게시물에서 다룬 질문은 if문 대신 switch문을 사용하여 문제를 해결할 수 있는지에 대한 것이었고, 이는 구조적으로 상우님 질문의 기반이 되는 로직 처리 방식과 관련이 있습니다. 아래는 그 답변입니다:
안녕하세요. Go1님, 공식 서포터즈 OMG입니다.
네, switch로도 가능합니다 ^^
아래 코드를 참고해주세요 😀
while (true) {
System.out.println("1: 상품 입력, 2: 결제, 3: 프로그램 종료");
int option = input.nextInt();
switch (option) {
case 1:
input.nextLine();
System.out.print("상품명을 입력하세요: ");
String product = input.nextLine();
System.out.print("상품의 가격을 입력하세요: ");
int price = input.nextInt();
System.out.print("구매 수량을 입력하세요: ");
int quantity = input.nextInt();
totalCost += price * quantity;
System.out.println("상품명:" + product + " 가격:" + price + " 수량:" + quantity + " 합계:" + price * quantity);
break;
case 2:
System.out.println("총 비용: " + totalCost);
totalCost = 0;
break;
case 3:
System.out.println("프로그램을 종료합니다.");
return;
default:
System.out.println("올바른 옵션을 선택해주세요.");
break;
}
}
변수의 수와 코드의 효율성에 대해 상우님의 질문에 직접 대답하자면, 변수 sum을 사용하여 각 판매행위 후의 상품 가격과 수량의 곱을 저장하고, 이를 totalPrice에 누적시키는 방법은 코드의 가독성과 유지 보수성을 높일 수 있는 합리적인 접근법일 수 있습니다. 특히, 각 거래의 소계(sum)를 저장함으로써 코드의 명확성을 높이고, 미래의 요구사항 변경(예를 들어, 각 거래의 소계를 별도로 기록하거나 확인해야 하는 경우)에 유연하게 대응할 수 있습니다.
다만, 간단한 프로그램에서는 sum 변수 없이 직접 totalPrice += price * quantity;와 같이 처리해도 코드의 성능이나 효율성에 큰 차이를 미치지 않습니다. 변수를 추가하는 것이 항상 비효율적이라기보다는 상황과 요구에 따라 적절히 선택해야 하는 문제입니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
문제와 풀이4 문제점
0
42
2
문제풀이 시간마다 방향성
0
39
2
피라미드 문제 풀이
0
71
1
ScannerWhile3 예제 코드 질문
0
55
1
짝수 출력 문제 질문
0
50
1
Array 연습 문제 5번 질문입니다.
0
84
2
단축어가 이상하게 나옵니다
0
128
2
Sql강의
0
90
1
array 문제풀이 2번 질문입니다.
0
55
1
JAVA입문 / 메서드편 문제와 풀이2
0
47
1
인텔리제이 무료버젼이 통합되었다는데 30일 무료버전이면 어떻게 사용하나요
1
801
3
OperationEx3에서 꼭 boolean을 써야 하나요?
0
59
1
for, while문 작성
0
65
1
68강 ArrayEx6 클래스 질문
0
60
1
IO.println(String.format("Hello and welcome!"));
0
149
2
소스코드 실행이 안돼요
0
119
2
메서드 문제와 풀이2에서 마지막 문제 이렇게 풀어도 괜찮은 건가요..?
0
79
1
While과 for 스코프 질문
0
63
1
김영한 java 입문 설치 질문
0
138
2
버퍼문제?
0
54
1
for문 피라미드 찍는거 질문
0
78
1
21버전이 없고, 강의 메뉴얼 확인해보면 된다는 김영한 선생님 답변 확인했습니다.
0
375
1
3번 문제 질문 있습니다.
0
99
2
sout에는 변수가 하나만 들어가야 하나요?
0
134
1

