Programing_Java

Project#9 _ OTT Program (유효성 검사 / 예외 처리) 본문

Projects

Project#9 _ OTT Program (유효성 검사 / 예외 처리)

Joyfullyever 2025. 2. 4. 21:34

#1 유효성 검사와 예외 처리의 목적

: 사용자가 잘못된 값을 입력했을 때, 오류 메세지를 보여주는 것이 아니라 올바른 값을 입력하도록 유도하여 프로그램이 정상적으로 출력되도록 하기 위함

 

#2 Project에 활용한 유효성 검사와 예외 처리

public int inputNum() {

int num;

while (true) {

try {

System.out.print("번호를 선택해주세요 >> ");

num = sc.nextInt();

sc.nextLine(); // 버퍼 비우기

if (num >= 0) {

return num;

} else {

System.out.println("❌ 음수는 입력할 수 없습니다.");

}

} catch (Exception e) {

sc.nextLine(); // 입력 버퍼 비우기

System.out.println("❌ 숫자로 입력해주세요. >> ");

}

}

}

 

번호를 입력받는 메서드

 : 사용자가 음수의 값( - )이나 정수가 아닌 문자 또는 문자열을 입력할 경우, 오류를 발생시키는 것이 아니라, 올바른 값을 다시 입력하도록 함

 

// ID/PW 입력 메서드

// ID >> 공백 체크

public String inputId() {

String id;

while (true) {

System.out.print("아이디를 입력해주세요 >> ");

id = sc.nextLine().trim(); // 공백 제거

if (id.isEmpty()) {

System.out.println("❌ 아이디는 공백일 수 없습니다!");

} else if (id.contains(" ")) {

System.out.println("❌ 아이디에 띄어쓰기는 불가능합니다!");

} else {

return id;

}

}

}

 

// PW >> 공백 체크

public String inputPw() {

String pw;

while (true) {

System.out.print("비밀번호를 입력해주세요 >> ");

pw = sc.nextLine().trim();

if (pw.isEmpty()) {

System.out.println("❌ 비밀번호는 공백일 수 없습니다!");

} else if (pw.contains(" ")) {

System.out.println("❌ 비밀번호에 띄어쓰기는 불가능합니다!");

} else {

return pw;

}

}

}

 

ID, PW를 입력하는 메서드

: 공백으로 둔 상태에서 입력하거나, 띄어쓰기를 하는 경우 그대로 진행하지 않고 사용자에게 올바른 ID와 PW를 입력받도록 함

 

public boolean printCheckDelete() {

while (true) {

System.out.print("정말 해당 영상을 삭제하시겠습니까? (Y/N) >> ");

String answer = sc.nextLine().trim().toUpperCase();

if (answer.equals("Y"))

return true;

if (answer.equals("N"))

return false;

System.out.println("❌ Y 또는 N으로 입력해주세요.");

}

}

 

문자열 입력 확인 메서드

문자열을 입력받고 지정한 문자열을 제외한 다른 문자열을 입력할 경우, 재입력 하도록 하는 메서드

사용자가 입력한 값을 무조건 대문자로 입력되게 하는 toUpperCase를 활용한 후, if문에 Y, N으로 구분하여 값을 확인 받도록 함

 

public int addNewAd() {

System.out.println("\n======== 광고 영상 등록 ========");

while (true) {

try {

System.out.print("광고로 등록할 영상 번호를 입력해주세요 >> ");

return Integer.parseInt(sc.nextLine());

} catch (NumberFormatException e) {

System.out.println("❌ 올바른 숫자를 입력해주세요.");

}

}

}

 

숫자만 입력하도록 하는 예외처리

번호를 입력받아 값을 반환해야 하기 때문에, 문자열을 입력하더라도 정수를 반환하도록 하는 Integer.parseInt 메서드 사용

만약 반환하는 값이 정수가 아닌 다른 타입의 값이 나온다면 예외처리를 하여 정수를 입력하도록 하는 메서드

 

public void showMovieList(ArrayList<MovieDTO> movies) {

System.out.println("\n======== 영화 목록 ========");

if (movies.isEmpty()) {

System.out.println("등록된 영화가 없습니다.");

} else {

System.out.println("[번호] 제목 평점 ");

System.out.println("----------------------------");

for (MovieDTO movie : movies) {

System.out.printf("[%d] %-12s %.1f \n", movie.getMovieId(), movie.getTitle(), movie.getRating());

}

}

System.out.println("==========================");

}

 

배열을 출력하는 메서드

만약 배열이 비어 있다면, if문의 isEmpty() 메서드를 통해 배열이 비어있다고 출력,

만약 배열이 비어있지 않다면, 정상적으로 배열 출력