개발일기/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
}