반응형
https://dev-with-gpt.tistory.com/88
오늘 수업은 지난번 프로그램에 이어서 추가로 진행하였다.
프로그램에 대한 설명 : 수정된 부분
수정된 부분:
- 배열 num, name, email, password, gender를 static으로 선언하여 main() 메소드에서 사용할 수 있도록 변경 배열은 클래스 멤버로 이동하고, main() 메소드 상단에 선언 및 초기화
- Scanner 및 관련 변수 선언 및 초기화:
keyboardScanner, userid, length 변수를 static으로 선언하여 main() 메소드에서 사용할 수 있도록 변경
Scanner 객체 keyboardScanner는 한 번만 생성하여 재사용하도록 main() 메소드 상단에 선언 및 초기화 - for 루프 대신 while 루프 사용:
inputMember() 메소드 내의 for 루프 대신 while 루프를 사용하여 배열에 회원 정보를 입력받는 로직을 수정 - length 변수를 활용하여 배열 인덱스를 조정하고, MAX_SIZE를 초과할 경우에는 입력을 중단하도록 변경
- num 배열 값 할당:
num 배열에 회원 번호를 할당할 때, userid++를 사용하여 회원 번호를 증가시키도록 수정 - printMembers() 메소드 출력 형식:
printMembers() 메소드의 출력 형식을 가독성을 높이기 위해 변경. 회원 정보를 출력하기 전에 구분선을 추가
package bitcamp.myapp;
import java.util.Scanner;
public class App4 {
final static int MAX_SIZE = 3; // 배열 길이
static int[] num = new int[MAX_SIZE];
static String[] name = new String[MAX_SIZE];
static String[] email = new String[MAX_SIZE];
static String[] password = new String[MAX_SIZE];
static char[] gender = new char[MAX_SIZE];
static Scanner keyboardScanner = new Scanner(System.in);
static int userid = 1;
static int length = 0;
public static void main(String[] args) {
//int
// 타이틀 메소드 출력
printTitle();
//배열생성
// 키보드 스캐너 준비
// for문 배열 입력 (회원정보 입력)
// for (int i = 0; i < MAX_SIZE; i++) {
while (length < MAX_SIZE) {
inputMember();
if (!promptContinue()) {
break;
}
}
// 회원정보 출력
printMembers();
keyboardScanner.close();
}
// methods
static void printTitle() {
System.out.println("나의 목록 관리 시스템");
System.out.println("----------------------");
}
static void inputMember() {
System.out.print("이름은? ");
name[length] = keyboardScanner.nextLine();
System.out.print("이메일은? ");
email[length] = keyboardScanner.nextLine();
System.out.print("암호는? ");
password[length] = keyboardScanner.nextLine();
loop: while (true) { //true가 나올 때까지 반복한다.(라벨생성)
System.out.print("성별은? (1. 남자 / 2. 여자) ");
String menuNO = keyboardScanner.nextLine();
switch (menuNO) { // if문 대신 사용가능. break때문에 loop 사용해야한다.
case "1":
gender[length] = 'M';
break loop;
case "2":
gender[length] = 'W';
break loop;
default:
System.out.print("무효한 번호입니다.\n");
}
}
num[length] = userid ++;
length++;
}
static boolean promptContinue() {
//계속 진행 할 것인지 확인
System.out.print("계속 하시겠습니까? (Y/n): ");
String choice = keyboardScanner.nextLine(); // Enter를 빈문자열로 인식한다.
System.out.println("");
if (!choice.equals("") && !choice.equalsIgnoreCase("Y")) { // ignoreCase는 대소문자를 구분x
System.out.println("실행을 종료합니다.");
return false;
} else {
return true;
}
}
static void printMembers() {
//출력
System.out.println("------------------------------");
System.out.println("번호, 이름, 이메일, 성별");
System.out.println("------------------------------");
for (int i = 0; i < MAX_SIZE; i++) {
System.out.printf("%d %s %s %c\n",
num[i], name[i], email[i], gender[i]);
}
}
}
[출력결과]
반응형