개발일기/Java
static 메소드 및 필드멤버 : 회원가입 프로그램 만들기
민장미
2023. 4. 18. 20:41
package ex1;
import java.util.Scanner;
public class Ex8_Sample {
// 1:멤버필드 static, 변수로 선언 하기
// 멤버영역이기 때문에 static메서드에서 서로 참조 할 수 있다.
static String[] names; // 기본 값 : null
static int[] ages; // 기본값 : null
static boolean type1; // 기본 값이 false
public static void init(int size) {
if (type1 == false) {
// 배열을 생성시킨다.
System.out.println("배열을 생성합니다." + type1);
names = new String[size];
ages = new int[size];
// 다시 init()가 호출 되었을 때 생성되지 않도록 값을 변경
type1 = true;
} else {
// 이미 생성된 배열이 있습니다.
System.out.println("이미 생성된 배열이 있습니다." + type1);
System.out.println("Size: " + names.length);
}
} // init
public static void main(String[] args) {
// init(3);
Scanner sc = new Scanner(System.in);
System.out.println("인원수 : ");
int size = Integer.parseInt(sc.nextLine());
init(size);
ext: while (true) {
System.out.print("1-가입시키기, 2-출력하기, 3-종료");
int menu = Integer.parseInt(sc.nextLine());
switch (menu) {
case 1:
System.out.print("Name:");
String name = sc.nextLine();
System.out.print("Age:");
int age = Integer.parseInt(sc.nextLine());
// 배열에 값을 저장하는 함수
addData(name, age); // 오류났을때 create 클릭
break;
case 2:
// 배열의 값을 출력해서 문자열로 반환하는 함수
String res = printData();
System.out.println(printData());
break;
case 3:
System.out.println("종료");
break ext;
} // switch
} // while
} // main
private static String printData() {
String msg = "";
for (int i = 0; i < names.length; i++) {
msg += "이름:" + names[i] + "\n";
msg += "나이:" + ages[i] + "\n";
if (ages[i] >= 19) {
msg += "구분 : 성년 \n";
} else {
msg += "구분 : 미성년 \n";
}
msg += "========================\n";
}
return msg;
} // printData
static int idx; // 초기 값이 0
private static void addData(String name, int age) {
// try _catch로 변경이 가능하다.
// code here
// "더 이상 입력이 불가능 합니다" 영역을 먼저 생각
// 배열 길이가 3 => idx -> 0,1,2, 즉 idx가 3이상이면 안되도록
if (idx >= names.length) {
System.out.println("더 이상 입력이 불가능 합니다.");
} else {
// 실행영역
names[idx] = name;
ages[idx] = age;
idx++; // 배열에 인덱스를 저장 할 때
}
} // addData
}