코드 그라데이션

카드 3장 발급하여 결제와 비밀번호 변경 로직 만들기 본문

Java/간단한 Quiz

카드 3장 발급하여 결제와 비밀번호 변경 로직 만들기

완벽한 장면 2023. 1. 14. 10:23

주요개념

- 클래스, 생성자, 멤버변수, 객체와 인스턴스

 

Card 

public class Card {
    public String user;
    public int pw;
    public int bal;

    public Card(){;}

    public Card(String user, int pw, int bal) {
        this.user = user;
        this.pw = pw;
        this.bal = bal;
    }
    public int getPw() {
        return pw;
    }

    public void setPw(int pw) {
        this.pw = pw;
        System.out.println("비밀번호 변경 완료!");
    }
}

 

본 클래스

public class Quiz {
	public static void main(String[] args) {
        // 이름, 잔액, 비밀번호 등을 입력해야 하므로 스캐너 필요.
        Scanner sc = new Scanner(System.in);
        // 그래서 배열 형태가 필요

        Card[] c = new Card[3];

        // 3장이 발급될동안 해당 정보들이 반복될것이므로, for문을 사용해준다.
        for (int i = 0; i < 3; i++) {
            System.out.println("이름: ");
            String name = sc.nextLine();

            System.out.println("비밀번호: ");
            int pw = sc.nextInt();

            System.out.println("잔액: ");
            int bal = sc.nextInt();

            // 이렇게만 두면, 잔액이 버퍼에 남아있으므로, 버퍼를 일부러 한 번 비워주어야 한다.
            sc.nextLine();
            c[i] = new Card(name,pw,bal); //각각 i번째 카드에 정보 입력 후 카드 생성 가능
        }

        // 결제 구현
        // 비밀번호 일치여부 확인, 일치하면 5000원 결제, 여건이 되지 않으면 "잔액이 부족합니다" 출력
        //=> 일단 Card 클래스에서 비밀번호 일치하는지 여부를 판단하는 메서드가 필요하게 된다.
        // 이거 그냥 Card 클래스에서 게터세터로 가지고 와서 일치여부 판단한다(Day06에서는 아직 배우지 않았음)
        // 그래서 Card에 게터를 써줬음 그리고 결제 3번 반복할거니까, 반복문을 써준다.

        for (int i = 0; i < 3; i++) {
            System.out.println(c[i].user + " 님, 결제 진행 중입니다.");

            System.out.println("패스워드를 입력해주세요: ");
            int pw = sc.nextInt();
            // 비밀번호 일치하는 경우
            if(pw == c[i].getPw()) {
                if(c[i].bal<5000) {
                    System.out.println("잔액이 부족합니다!");
                }
                else {
                    c[i].bal -=5000; // c[i].bal = c[i].bal - 5000;
                    System.out.println("결제가 완료되었습니다!");
                }
            }
            // 비밀번호 불일치 하는 경우
            else {
                System.out.println("비밀번호가 일치하지 않습니다!");
            }
        }

        // 비밀번호 변경
        // 이번에는 새로운 값을 넣어줘야 하니, set이 필요할거야. Card클래스에 set을 써줘라.
        for (int i = 0; i<3; i++) {
            System.out.println(c[i].user + "님, 기존 패스워드를 입력하세요: ");
            int pw = sc.nextInt();

            // 비밀번호 일치, 변경
            if(pw==c[i].getPw()) {
                System.out.println("새로운 pw를 입력하세요: ");
                pw = sc.nextInt();

                // 변경한 비밀번호가 기존 비밀번호와 동일하다면 출력될 메시지는 아래에.
                if(pw == c[i].getPw()) {
                    System.out.println("기존 비밀번호와 동일합니다!");
                }
                else {
                    c[i].setPw(pw); // 동일하지 않은 경우, 새롭게 들어온 값으로 변경된다!
                }
            }
            // 비밀번호 불일치, 변경 불가 => if문 이외의 경우이므로, else문 처리를 통해 구현.
            else {
                System.out.println("비밀번호가 불일치하여 변경 불가!");
            }
        }

    }

}
728x90

'Java > 간단한 Quiz' 카테고리의 다른 글

가위바위보 게임 만들기  (0) 2023.01.14
숫자를 입력받아 거꾸로 출력하기  (0) 2023.01.14
계산기 만들기  (0) 2023.01.14
반복문 관련 Quiz  (1) 2023.01.14
스캐너 사용 Quiz 3번째, 조건문 사용  (0) 2023.01.14
Comments