작성
·
214
0
package array;
import java.util.Scanner;
public class ArrayEx10_1 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String[] productName = new String[10];
int[] productPrice = new int[10];
int productCount = 0;
while (true) {
System.out.println("1. 상품 등록 | 2. 상품 삭제 | 3. 상품 목록 | 4. 종료\n메뉴를 선택하세요." );
String options = scanner.nextLine();
if (options.equals("1") && productCount < 10) {
System.out.print("상품 이름을 입력하세요: ");
productName[productCount] =scanner.nextLine();
System.out.print("상품 가격을 입력하세요: ");
productPrice[productCount] =scanner.nextInt();
productCount++;
scanner.nextLine();
}
else if (options.equals("1") && productCount == 10) {
System.out.println("더 이상 상품을 동록할 수 없습니다.");
}
else if (options.equals("2") && productCount > 0) {
for (int i = 0; i < productCount; i++) {
System.out.println((i+1) + ". "+ productName[i] + ": " + productPrice[i] + "원");
}
System.out.println("삭제할 품목의 번호를 입력해주세요.");
int delNum = scanner.nextInt();
if ((delNum-1) < productCount) {
productName[delNum-1] = null;
productPrice[delNum-1] = 0;
productCount--;
System.out.println(delNum + "번 품목이 삭제되었습니다.");
scanner.nextLine();
}
else {
System.out.println("올바른 품목의 번호를 입력해주세요.");
scanner.nextLine();
}
}
else if (options.equals("2") && productCount == 0) {
System.out.println("삭제할 품목이 없습니다.");
}
else if (options.equals("3") && productCount > 0) {
for (int i = 0; i < productCount; i++) {
System.out.println((i+1) + ". "+ productName[i] + ": " + productPrice[i] + "원");
}
}
else if (options.equals("3") && productCount == 0) {
System.out.println("등록된 상풍이 없습니다.");
}
else if (options.equals("4")) {
System.out.println("프로그램을 종료합니다.");
break;
}
else {
System.out.println("올바른 메뉴를 선택해주세요.");
}
}
}
}
실습을 하다가 삭제기능도 있었으면 해서 만들어 봤습니다.우선, 강의를 봤을 때와 조금 다르게 만든거 같구요. 메뉴를 선택할 때 글자를 넣으면 오류가 떠서 스트링형으로 바꿨습니다.답변 1
1
안녕하세요, 인프런 AI 인턴입니다.
제공해주신 코드를 보면 여러 면에서 유용하고 학습 목적에 맞게 잘 작성하신 것 같습니다. 다만, 가독성과 중복 최소화를 위해 몇 가지 제안을 드리겠습니다.
메뉴 선택 부분을 별도의 메소드로 분리할 수 있습니다. 이렇게 하면 main 메소드의 길이를 줄이고, 코드의 가독성을 향상시킬 수 있습니다.
상품 관련 기능(등록, 삭제, 목록 조회) 또한 각각 별도의 메소드로 분리할 수 있습니다. 이는 기능별 책임을 분리하고, 재사용성과 가독성을 높이는 데 도움이 됩니다.
입력 오류를 처리하는 로직을 추가하여 사용자가 숫자 대신 문자를 입력했을 때의 상황을 더 명확히 처리할 수 있습니다.
상품 삭제 기능에서 상품을 삭제한 후에는 그 뒤의 상품들을 앞으로 당겨야 합니다. 현재 로직에서는 삭제된 항목의 공간을 null로 남기고 있어, 상품 목록의 연속성에 문제가 생길 수 있습니다.
절차지향적으로 작성된 이 코드를 객체지향적인 방법으로 리팩토링하는 것도 한 가지 방법이 될 수 있습니다. 예를 들어, Product
라는 클래스를 만들어 상품 정보를 관리하고, ProductManager
같은 클래스에서 상품 등록, 삭제, 조회 기능을 관리하도록 하는 것입니다. 이렇게 구조를 변경하면 코드가 더 유연하고 확장 가능해집니다.
강의 내용과 질문하신 내용이 직접적으로 일치하지 않기 때문에, 구체적으로 강사님께서 어떻게 하셨을지는 정확히 말씀드리기 어렵습니다. 하지만 위에서 제안드린 방법들은 일반적으로 코드의 구조와 가독성을 개선하는 데 도움이 될 것입니다.
고맙읍니다