개인 프로젝트 - 마트 물품 관리 시스템
App.java
package bitcamp.report;
import bitcamp.report.handler.itemHandler;
import bitcamp.util.Prompt;
public class App {
public static void main(String[] args) {
printTitle();
while (itemHandler.available()) {
itemHandler.inputMember();
if (!promptContinue()) {
break;
}
}
itemHandler.printMembers();
Prompt.close();
}
static void printTitle() {
System.out.println("마트 물품 관리 시스템");
System.out.println("---------------------------------------------------------------------");
}
// static boolean promptContinue() {
// String response = Prompt.inputString("계속 하시겠습니까?(Y/n) ");
// if (!response.equals("") && !response.equalsIgnoreCase("Y")) {
// return false;
// }
// return true;
//}
}
itemHandler.java
package bitcamp.report.handler;
import bitcamp.util.Prompt;
public class itemHandler {
static final int MAX_SIZE = 100;
static int[] no = new int[MAX_SIZE];
static String[] name = new String[MAX_SIZE];
static String[] price = new String[MAX_SIZE];
static String[] type = new String[MAX_SIZE];
static int itemId = 1;
static int length = 0;
static final String FOOD = "식료품";
static final String HOUSEHOLD_SUPPLIES = "생활용품";
static final String CLOTHES = "의류";
static final String HOME_APPLIANCES = "가전제품";
static final String LIVING = "리빙";
public static void inputMember() {
name[length] = Prompt.inputString("물품 이름? ");
price[length] = Prompt.inputString("물품 가격? ");
loop: while (true) {
String typeNo = Prompt.inputString("종류:\n" +
" 1. 식료품\n" +
" 2. 생활용품\n" +
" 3. 의류\n" +
" 4. 가전제품\n" +
" 5. 리빙\n" +
"> ");
switch (typeNo) {
case "1":
type[length] = FOOD;
break loop;
case "2":
type[length] = HOUSEHOLD_SUPPLIES;
break loop;
case "3":
type[length] = CLOTHES;
break loop;
case "4":
type[length] = HOME_APPLIANCES;
break loop;
case "5":
type[length] = LIVING;
break loop;
default:
System.out.println("무효한 번호입니다.");
}
}
no[length] = itemId++;
length++;
}
public static void printMembers() {
System.out.println("---------------------------------------------------------------------");
System.out.println("물품 번호, 물품 이름, 물품 가격, 종류");
System.out.println("---------------------------------------------------------------------");
for (int i = 0; i < length; i++) {
System.out.printf("%d, %s, %s, %s\n", no[i], name[i], price[i], type[i]);
}
}
public static boolean available() {
return length < MAX_SIZE;
}
}
Prompt.java
package bitcamp.util;
import java.util.Scanner;
public class Prompt {
static Scanner scanner = new Scanner(System.in);
public static String inputString(String title) {
System.out.print(title);
return scanner.nextLine();
}
public static void close() {
scanner.close();
}
}
App.java 수정
while (itemHandler.available()) {
itemHandler.inputMember();
if (!promptContinue()) {
break;
}
}
itemHandler.printMembers();
ㄴ 해당 while 문을 제거하고 아래와 같이 메뉴 만들기
시스템 메뉴 만들기
System.out.println("1. 물품 등록");
System.out.println("2. 물품 목록");
System.out.println("3. 물품 조회");
System.out.println("4. 물품 변경");
System.out.println("5. 물품 삭제");
System.out.println("6. 종료");
System.out.println("> ");
시스템 메뉴 만들기 코드 수정 - 시스템 메뉴 번호 입력 받아 출력하기
System.out.println("1. 물품 등록");
System.out.println("2. 물품 목록");
System.out.println("3. 물품 조회");
System.out.println("4. 물품 변경");
System.out.println("5. 물품 삭제");
System.out.println("6. 종료");
String menuNo = Prompt.inputString("> "); // 시스템 메뉴 번호 입력받기
System.out.println(menuNo); // 입력한 번호 출력
시스템 메뉴 만들기 코드 수정 - menu 라는 문자열을 입력 받으면 시스템 메뉴 목록 다시 노출시키기
public static void main(String[] args) {
printTitle();
System.out.println("1. 물품 등록");
System.out.println("2. 물품 목록");
System.out.println("3. 물품 조회");
System.out.println("4. 물품 변경");
System.out.println("5. 물품 삭제");
System.out.println("6. 종료");
while (true) {
String menuNo = Prompt.inputString("> ");
if (menuNo.equals("6")) {
break;
} else if (menuNo.equals("menu")) {
System.out.println("1. 물품 등록");
System.out.println("2. 물품 목록");
System.out.println("3. 물품 조회");
System.out.println("4. 물품 변경");
System.out.println("5. 물품 삭제");
System.out.println("6. 종료");
}
System.out.println(menuNo);
}
Prompt.close();
}
ㄴ while 문은 6을 입력받아 종료될 때까지 계속 반복
ㄴ 겹치는 코드가 존재하므로 이는 메소드로 추출
시스템 메뉴 만들기 코드 수정 - 겹치는 코드 메소드로 추출
static void printMenu() {
System.out.println("1. 물품 등록");
System.out.println("2. 물품 목록");
System.out.println("3. 물품 조회");
System.out.println("4. 물품 변경");
System.out.println("5. 물품 삭제");
System.out.println("6. 종료");
}
ㄴ 겹치는 부분 printMenu() 라는 메소드로 추출
시스템 메뉴 만들기 코드 수정 - itemHandler 의 inputItem() 메서드 사용하기
public static void main(String[] args) {
printTitle();
printMenu();
while (true) {
String menuNo = Prompt.inputString("> ");
if (menuNo.equals("6")) {
break;
} else if (menuNo.equals("menu")) {
printMenu();
} else if (menuNo.equals("1")) {
itemHandler.inputItem();
} else {
System.out.println(menuNo);
}
}
Prompt.close();
}
ㄴ 시스템 메뉴에서 1번은 물품 등록이므로 inputItem() 이라는 이름의 메서드를 사용할 것임
ㄴ itemHandler.inputItem() 코드 추가
itemHandler.java 수정
inputItem() 메서드 수정 - available() 이용
public static boolean available() {
return length < MAX_SIZE;
}
ㄴ 해당 메서드를 inputMember() 안에서 활용
if (!available()) {
System.out.println("더이상 입력할 수 없습니다!");
return;
}
ㄴ length 가 MAX_SIZE 를 넘어서면 "더이상 입력할 수 없습니다!" 메시지 출력
App.java 수정
시스템 메뉴 만들기 코드 수정 - itemHandler 의 printItems() 메서드 사용하기
public static void main(String[] args) {
printTitle();
printMenu();
while (true) {
String menuNo = Prompt.inputString("> ");
if (menuNo.equals("6")) {
break;
} else if (menuNo.equals("menu")) {
printMenu();
} else if (menuNo.equals("1")) {
itemHandler.inputItem();
} else if (menuNo.equals("2")) {
itemHandler.printItems();
} else {
System.out.println(menuNo);
}
}
Prompt.close();
}
ㄴ 시스템 메뉴에서 2번은 물품 목록 출력이므로 printItem() 이라는 이름의 메서드를 사용할 것임
ㄴ itemHandler.printItem() 코드 추가
시스템 메뉴 만들기 코드 수정 - itemHandler 의 viewItem() 메서드 추가
public static void main(String[] args) {
printTitle();
printMenu();
while (true) {
// 세부 선택을 하는 '>' 와 구분하기 어려우므로 메인 이라는 문자 추가
String menuNo = Prompt.inputString("메인> ");
if (menuNo.equals("6")) {
break;
} else if (menuNo.equals("menu")) {
printMenu();
} else if (menuNo.equals("1")) {
itemHandler.inputItem();
} else if (menuNo.equals("2")) {
itemHandler.printItems();
} else if (menuNo.equals("3")) {
itemHandler.viewItems();
} else {
System.out.println(menuNo);
}
}
Prompt.close();
}
ㄴ 시스템 메뉴에서 3번은 물품 조회이므로 viewItem() 이라는 이름의 메서드를 사용할 것임
ㄴ itemHandler.viewItem() 코드 추가
itemHandler.java 수정
viewItem() 메서드 추가
# 이렇게 출력되도록 만들 것
물품 번호? 1
물품 이름:
물품 가격:
물품 종류
>
물품 번호? 2
해당 번호의 물품이 없습니다.
public static void viewItem() {
// 입력 받은 번호를 가지고 배열에서 해당 물품을 찾아야 함
String itemNo = Prompt.inputString("물품 번호? ");
for (int i = 0; i < length; i++) {
// i 번째 항목에 저장된 물품 정보 출력
if (no[i] == Integer.parseInt(itemNo)) {
System.out.printf("물품 이름: %s\n", name[i]);
System.out.printf("물품 가격: %s\n", price[i]);
System.out.printf("물품 종류: %c\n", type[i]);
return;
}
}
System.out.println("해당 번호의 물품이 없습니다!");
}
ㄴ 물품 번호를 받아서 해당 번호가 존재하는지 여부를 확인하고 없으면 "해당 번호의 물품이 없습니다!" 출력하고 있으면 해당 번호의 물품 정보를 출력
** type[i] 부분이 gender[i] 라면
- 아래 조건식도 사용 가능(M or W 2가지 이므로)
- print 메서드 부분도 아래와 같이 사용 가능
- toGenderString 메서드 생성하여 간편화 가능
App.java 수정
시스템 메뉴 만들기 코드 수정 - itemHandler 의 updateItem() 메서드 추가
public static void main(String[] args) {
printTitle();
printMenu();
while (true) {
// 세부 선택을 하는 '>' 와 구분하기 어려우므로 메인 이라는 문자 추가
String menuNo = Prompt.inputString("메인> ");
if (menuNo.equals("6")) {
break;
} else if (menuNo.equals("menu")) {
printMenu();
} else if (menuNo.equals("1")) {
itemHandler.inputItem();
} else if (menuNo.equals("2")) {
itemHandler.printItems();
} else if (menuNo.equals("3")) {
itemHandler.viewItems();
} else if (menuNo.equals("4")) {
itemHandler.updateItems();
} else {
System.out.println(menuNo);
}
}
Prompt.close();
}
ㄴ 시스템 메뉴에서 4번은 물품 변경이므로 updateItem() 이라는 이름의 메서드를 사용할 것임
ㄴ itemHandler.updateItem() 코드 추가
ItemHandler.java 수정
updateItem() 메서드 추가
# 이렇게 출려되도록 만들 것
메인> 4
번호? 1
이름(홍길동)? 임꺽정
이메일(hong@test.com)? leem@test.com
새암호? 1212
성별(여자)?
1. 남자
2. 여자
> 1
public static void updateItem() {
String itemNo = Prompt.inputString("물품 번호? ");
for (int i = 0; i < length; i++) {
if (no[i] == Integer.parseInt(itemNo)) {
System.out.printf("물품 이름(%s)? ", name[i]);
name[i] = Prompt.inputString("");
System.out.printf("물품 가격(%s)? ", price[i]);
price[i] = Prompt.inputString("");
loop: while (true) {
String typeNo = Prompt.inputString("종류(" + type[i] + ")?\n" +
" 1. 식료품\n" +
" 2. 생활용품\n" +
" 3. 의류\n" +
" 4. 가전제품\n" +
" 5. 리빙\n" +
"> ");
switch (typeNo) {
case "1":
type[length] = FOOD;
break loop;
case "2":
type[length] = HOUSEHOLD_SUPPLIES;
break loop;
case "3":
type[length] = CLOTHES;
break loop;
case "4":
type[length] = HOME_APPLIANCES;
break loop;
case "5":
type[length] = LIVING;
break loop;
default:
System.out.println("무효한 번호입니다.");
}
}
return;
}
}
System.out.println("해당 번호의 물품이 없습니다!");
}
ㄴ viewItem() 메서드의 물품 번호를 묻는 부분 참고하여 작성
ㄴ inputItem() 메서드 참고하여 작성
inputType(String type) 메서드 추가
private static String inputType(String type) {
String label;
if (type == null) {
label = "물품 종류?\n";
} else {
label = String.format("물품 종류(%s)?\n", type);
}
loop: while (true) {
String typeNo = Prompt.inputString(label +
" 1. 식료품\n" +
" 2. 생활용품\n" +
" 3. 의류\n" +
" 4. 가전제품\n" +
" 5. 리빙\n" +
"> ");
switch (typeNo) {
case "1":
return FOOD;
case "2":
return HOUSEHOLD_SUPPLIES;
case "3":
return CLOTHES;
case "4":
return HOME_APPLIANCES;
case "5":
return LIVING;
default:
System.out.println("무효한 번호입니다.");
}
}
}
ㄴ inputItem(), updateItem() 메서드에서 사용할 것 => inputItem(), updateItem() 메서드 리팩토링
=> type[i] = inputItem(type[i]);
리팩토링 된 inputItem(), updateItem() 메서드
public static void inputItem() {
if (!available()) {
System.out.println("더이상 입력할 수 없습니다!");
return;
}
name[length] = Prompt.inputString("물품 이름? ");
price[length] = Prompt.inputString("물품 가격? ");
// System.out.print("한정 판매(true/false)? ");
// limited_Sale[i] = scanner.nextBoolean();
type[length] = inputType(null);
no[length] = itemId++;
length++;
}
public static void updateItem() {
String itemNo = Prompt.inputString("물품 번호? ");
for (int i = 0; i < length; i++) {
if (no[i] == Integer.parseInt(itemNo)) {
System.out.printf("물품 이름(%s)? ", name[i]);
name[i] = Prompt.inputString("");
System.out.printf("물품 가격(%s)? ", price[i]);
price[i] = Prompt.inputString("");
type[i] = inputType(type[i]);
return;
}
}
System.out.println("해당 번호의 물품이 없습니다!");
}
App.java 수정
시스템 메뉴 만들기 코드 수정 - itemHandler 의 deleteItem() 메서드 추가
public static void main(String[] args) {
printTitle();
printMenu();
while (true) {
// 세부 선택을 하는 '>' 와 구분하기 어려우므로 메인 이라는 문자 추가
String menuNo = Prompt.inputString("메인> ");
if (menuNo.equals("6")) {
break;
} else if (menuNo.equals("menu")) {
printMenu();
} else if (menuNo.equals("1")) {
itemHandler.inputItem();
} else if (menuNo.equals("2")) {
itemHandler.printItems();
} else if (menuNo.equals("3")) {
itemHandler.viewItems();
} else if (menuNo.equals("4")) {
itemHandler.updateItems();
} else if (menuNo.equals("5")) {
itemHandler.deleteItems();
} else {
System.out.println(menuNo);
}
}
Prompt.close();
}
ㄴ 시스템 메뉴에서 5번은 물품 삭제이므로 deleteItem() 이라는 이름의 메서드를 사용할 것임
ㄴ itemHandler.deleteItem() 코드 추가
deleteItem() 메서드 추가
# 이렇게 출려되도록 만들 것
메인> 5
번호? 7
해당 번호의 회원이 없습니다!
메인> 5
번호? 2
삭제했습니다.
메인>
1. 삭제하려는 회원의 정보가 들어있는 인덱스를 알아내기
2. 만약 삭제하려는 항목이 마지막 인덱스의 항목이라면 마지막 인덱스의 값만 0으로 초기화시키기
3. 그 밖에는 해당 인덱스부터 반복하면서 앞 인덱스의 값을 당겨오기
4. length를 하나 줄이기
String 으로 선언된 itemNo 를 int 로 변경하기 및 for 문을 if 문으로 변경하기
String itemNo = Prompt.inputString("물품 번호? ");
int deletedIndex = indexOf(Integer.parseInt(itemNo));
// 입력 받은 번호를 가지고 배열에서 해당 회원을 찾아야 함
for (int i = 0; i < length; i++) {
if (no[i] == Integer.parseInt(itemNo)) {
deletedIndex = i;
break;
}
}
=>
// 삭제하려는 물품의 정보가 들어있는 인덱스 알아내기
int itemNo = Integer.parseInt(Prompt.inputString("물품 번호? "));
int deletedIndex = indexOf(itemNo);
// // 입력 받은 번호를 가지고 배열에서 해당 물품을 찾아야 함
// for (int i = 0; i < length; i++) {
// if (no[i] == Integer.parseInt(itemNo)) {
// deletedIndex = i;
// break;
// }
// }
if (deletedIndex == -1) {
System.out.println("해당 번호의 물품이 없습니다!");
return;
}
indexOf(int itemNo) 메서드 생성
private static int indexOf(int itemNo) {
for (int i = 0; i < length; i++) {
if (no[i] == itemNo) {
return i;
}
}
return -1;
}
ㄴ 배열에서 특정 항목을 찾는 과정에서 일치하는 항목이 없으면 일반적으로 -1을 반환하는 관례가 있으므로 해당 메서드 생성
ㄴ 이는 배열의 인덱스는 0부터 시작하기 때문에, 0 또는 양수인 인덱스는 유효한 배열 요소를 나타내고, -1은 일치하는 항목이 없음을 나타내는 것
public static void deleteItem() {
// 삭제하려는 물품의 정보가 들어있는 인덱스 알아내기
int itemNo = Integer.parseInt(Prompt.inputString("물품 번호? "));
int deletedIndex = indexOf(itemNo);
// // 입력 받은 번호를 가지고 배열에서 해당 물품을 찾아야 함
// for (int i = 0; i < length; i++) {
// if (no[i] == Integer.parseInt(itemNo)) {
// deletedIndex = i;
// break;
// }
// }
if (deletedIndex == -1) {
System.out.println("해당 번호의 물품이 없습니다!");
return;
}
if (deletedIndex < (length - 1)) {
// 만약 삭제하려는 항목이 마지막 인덱스의 항목이라면 마지막 인덱스의 값만 0으로 초기화 시키기
no[deletedIndex] = 0;
name[deletedIndex] = null;
price[deletedIndex] = null;
type[deletedIndex] = null;
} else {
// 그 밖에는 해당 인덱스부터 반복하면서 앞 인덱스의 값을 당겨오기
for (int i = deletedIndex; i < length - 1; i++) {
no[i] = no[i + 1];
name[i] = name[i + 1];
price[i] = price[i + 1];
type[i] = type[i + 1];
}
// 배열의 맨 마지막 초기화
no[length - 1] = 0;
name[length - 1] = null;
price[length - 1] = null;
type[length - 1] = null;
}
// length 하나 줄이기
length--;
System.out.println("삭제했습니다.");
return;
}
ㄴ 여기서 배열의 맨 마지막 초기화 부분 코드가 겹치므로 아래와 같이 리팩토링 필요
리팩토링 된 배열의 맨 마지막 초기화 코드 수정
public static void deleteItem() {
// 삭제하려는 물품의 정보가 들어있는 인덱스 알아내기
int itemNo = Integer.parseInt(Prompt.inputString("물품 번호? "));
int deletedIndex = indexOf(itemNo);
// // 입력 받은 번호를 가지고 배열에서 해당 물품을 찾아야 함
// for (int i = 0; i < length; i++) {
// if (no[i] == Integer.parseInt(itemNo)) {
// deletedIndex = i;
// break;
// }
// }
if (deletedIndex == -1) {
System.out.println("해당 번호의 물품이 없습니다!");
return;
}
// if (deletedIndex < (length - 1)) {
// // 만약 삭제하려는 항목이 마지막 인덱스의 항목이라면 마지막 인덱스의 값만 0으로 초기화 시키기
// no[deletedIndex] = 0;
// name[deletedIndex] = null;
// price[deletedIndex] = null;
// type[deletedIndex] = null;
// } else {
// 그 밖에는 해당 인덱스부터 반복하면서 앞 인덱스의 값을 당겨오기
for (int i = deletedIndex; i < length - 1; i++) {
no[i] = no[i + 1];
name[i] = name[i + 1];
price[i] = price[i + 1];
type[i] = type[i + 1];
}
// 배열의 맨 마지막 초기화
no[length - 1] = 0;
name[length - 1] = null;
price[length - 1] = null;
type[length - 1] = null;
// }
// length 하나 줄이기
length--;
System.out.println("삭제했습니다.");
return;
}
Prompt 클래스에 inputInt(String title) 추가하기
public class Prompt {
static Scanner scanner = new Scanner(System.in);
public static String inputString(String title) {
System.out.print(title);
return scanner.nextLine();
}
public static int inputInt(String title) {
// System.out.print(title);
// return scanner.nextLine();
return Integer.parseInt(inputString(title));
}
public static void close() {
scanner.close();
}
}
총정리
App.java
import bitcamp.report.handler.itemHandler;
import bitcamp.util.Prompt;
public class App {
public static void main(String[] args) {
printTitle();
printMenu();
while (true) {
String menuNo = Prompt.inputString("메인> ");
if (menuNo.equals("6")) {
break;
} else if (menuNo.equals("menu")) {
printMenu();
} else if (menuNo.equals("1")) {
itemHandler.inputItem();
} else if (menuNo.equals("2")) {
itemHandler.printItems();
} else if (menuNo.equals("3")) {
itemHandler.viewItem();
} else if (menuNo.equals("4")) {
itemHandler.updateItem();
} else {
System.out.println(menuNo);
}
}
Prompt.close();
}
static void printMenu() {
System.out.println("1. 물품 등록");
System.out.println("2. 물품 목록");
System.out.println("3. 물품 조회");
System.out.println("4. 물품 변경");
System.out.println("5. 물품 삭제");
System.out.println("6. 종료");
}
static void printTitle() {
System.out.println("마트 물품 관리 시스템");
System.out.println("---------------------------------------------------------------------");
}
//static boolean promptContinue() {
// String response = Prompt.inputString("계속 하시겠습니까?(Y/n) ");
// if (!response.equals("") && !response.equalsIgnoreCase("Y")) {
// return false;
// }
// return true;
//}
}
ItemHandler.java
import bitcamp.util.Prompt;
public class itemHandler {
static final int MAX_SIZE = 100;
static int[] no = new int[MAX_SIZE];
static String[] name = new String[MAX_SIZE];
static String[] price = new String[MAX_SIZE];
// static boolean[] limited_Sale = new boolean[MAX_SIZE];
static String[] type = new String[MAX_SIZE];
static int itemId = 1;
static int length = 0;
static final String FOOD = "식료품";
static final String HOUSEHOLD_SUPPLIES = "생활용품";
static final String CLOTHES = "의류";
static final String HOME_APPLIANCES = "가전제품";
static final String LIVING = "리빙";
public static void inputItem() {
if (!available()) {
System.out.println("더이상 입력할 수 없습니다!");
return;
}
name[length] = Prompt.inputString("물품 이름? ");
price[length] = Prompt.inputString("물품 가격? ");
// System.out.print("한정 판매(true/false)? ");
// limited_Sale[i] = scanner.nextBoolean();
type[length] = inputType("0");
no[length] = itemId++;
length++;
}
public static void printItems() {
System.out.println("---------------------------------------------------------------------");
System.out.println("물품 번호, 물품 이름, 물품 가격, 종류");
System.out.println("---------------------------------------------------------------------");
for (int i = 0; i < length; i++) {
System.out.printf("%d, %s, %s, %s\n", no[i], name[i], price[i], type[i]);
}
}
public static void viewItem() {
String itemNo = Prompt.inputString("물품 번호? ");
for (int i = 0; i < length; i++) {
if (no[i] == Integer.parseInt(itemNo)) {
System.out.printf("물품 이름: %s\n", name[i]);
System.out.printf("물품 가격: %s\n", price[i]);
System.out.printf("물품 종류: %s\n", type[i]);
return;
}
}
System.out.println("해당 번호의 물품이 없습니다!");
}
public static void updateItem() {
String itemNo = Prompt.inputString("물품 번호? ");
for (int i = 0; i < length; i++) {
if (no[i] == Integer.parseInt(itemNo)) {
System.out.printf("물품 이름(%s)? ", name[i]);
name[i] = Prompt.inputString("");
System.out.printf("물품 가격(%s)? ", price[i]);
price[i] = Prompt.inputString("");
type[i] = inputType(type[i]);
return;
}
}
System.out.println("해당 번호의 물품이 없습니다!");
}
private static String inputType(String type) {
String label;
if (type == "0") {
label = "물품 종류?\n";
} else {
label = String.format("물품 종류(%s)?\n", type);
}
loop: while (true) {
String typeNo = Prompt.inputString(label +
" 1. 식료품\n" +
" 2. 생활용품\n" +
" 3. 의류\n" +
" 4. 가전제품\n" +
" 5. 리빙\n" +
"> ");
switch (typeNo) {
case "1":
return FOOD;
case "2":
return HOUSEHOLD_SUPPLIES;
case "3":
return CLOTHES;
case "4":
return HOME_APPLIANCES;
case "5":
return LIVING;
default:
System.out.println("무효한 번호입니다.");
}
}
}
public static void deleteItem() {
// 삭제하려는 물품의 정보가 들어있는 인덱스 알아내기
int itemNo = Integer.parseInt(Prompt.inputString("물품 번호? "));
int deletedIndex = indexOf(itemNo);
// // 입력 받은 번호를 가지고 배열에서 해당 물품을 찾아야 함
// for (int i = 0; i < length; i++) {
// if (no[i] == Integer.parseInt(itemNo)) {
// deletedIndex = i;
// break;
// }
// }
if (deletedIndex == -1) {
System.out.println("해당 번호의 물품이 없습니다!");
return;
}
// if (deletedIndex < (length - 1)) {
// // 만약 삭제하려는 항목이 마지막 인덱스의 항목이라면 마지막 인덱스의 값만 0으로 초기화 시키기
// no[deletedIndex] = 0;
// name[deletedIndex] = null;
// price[deletedIndex] = null;
// type[deletedIndex] = null;
// } else {
// 그 밖에는 해당 인덱스부터 반복하면서 앞 인덱스의 값을 당겨오기
for (int i = deletedIndex; i < length - 1; i++) {
no[i] = no[i + 1];
name[i] = name[i + 1];
price[i] = price[i + 1];
type[i] = type[i + 1];
}
// 배열의 맨 마지막 초기화
no[length - 1] = 0;
name[length - 1] = null;
price[length - 1] = null;
type[length - 1] = null;
// }
// length 하나 줄이기
length--;
System.out.println("삭제했습니다.");
return;
}
private static int indexOf(int itemNo) {
for (int i = 0; i < length; i++) {
if (no[i] == itemNo) {
return i;
}
}
return -1;
}
public static boolean available() {
return length < MAX_SIZE;
}
}
Prompt.java
public class Prompt {
static Scanner scanner = new Scanner(System.in);
public static String inputString(String title) {
System.out.print(title);
return scanner.nextLine();
}
public static int inputInt(String title) {
return Integer.parseInt(inputString(title));
}
public static void close() {
scanner.close();
}
}
'네이버클라우드 > JAVA 웹 프로그래밍' 카테고리의 다른 글
JAVA 12일차 (2023-06-08) 자바 기초 DAY10_개인 프로젝트 - 마트 물품 관리 시스템 (0) | 2023.06.08 |
---|---|
JAVA 12일차 (2023-06-08) 자바 기초 DAY10 (0) | 2023.06.08 |
JAVA 10일차 (2023-06-05) 자바 기초 DAY8 (0) | 2023.06.06 |
JAVA 9일차 (2023-06-02) 자바 기초 DAY7 (0) | 2023.06.02 |
JAVA 7일차 (2023-05-31) 자바 기초 DAY5 (0) | 2023.05.31 |