본문 바로가기

ETC/복습

[복습_JAVA] 20

실습(메소드)

- 자동차 shop 프로그램

1. 브랜드, 색상, 가격 변수 선언하기

// 전역변수는 자동으로 초기화된다.
String brand;  // null
String color;  // null
int price;  // 0
boolean check;  // false
String pw = "0000";
int policeCount;  // 0

 

 

 

※ 생성자 생성하기

public Car() {;}
	
	
public Car(String brand, String color, int price) {
	this.brand = brand;
	this.color = color;
	this.price = price;
} 
	
	
public Car(String brand, String color, int price, String pw) {
	this.brand = brand;
	this.color = color;
	this.price = price;
	this.pw = pw;
}

 

 

 

2. 시동 켜기(이미 시동이 켜져 있다면, 알맞는 메세지 출력하기)

boolean engineStart() {
	if(!check) {  // 시동이 꺼져있을 때(!check : false)
		return true;		
	} 
	return false;
}

 

 

 

3. 시동 끄기(이미 시동이 꺼져 있다면, 알맞는 메세지 출력하기)

boolean engineStop() {
	if(check) {  // 시동이 켜져있을 때
		return true;		
	} 
	return false;  
}

 

 

 

4. 비밀번호 검사

※ 참고

시동을 켤 때, 비밀번호 4자리를 입력받는다.
비밀번호가 일치하면 시동 켜짐
비밀번호가 일치하지 않으면 현재 몇 회 연속 틀렸는지를 출력
3회 연속 틀릴 시, "경찰 출동" 출력

 

 

 

- 코드

boolean checkPw(String pw) { 

	// 문자열끼리 비교할 때에는 equals()를 사용한다.
	// "문자열".equals("문자열");
	return this.pw.equals(pw);
		
}

 

 

 

5. main 메소드 안에서 실행

- 시동 켜기

if(choice == 1) {
	if(benz.engineStart()) {

		System.out.print("비밀번호 : ");
		pw = sc.next(); 
				
		if(benz.checkPw(pw)) {
			System.out.println(benz.brand + " 시동 켜짐");
			benz.policeCount = 0;  // policeCount 초기화
			benz.check = true;
		} else {
			benz.policeCount++;  // policeCount 증가
			
			if(benz.policeCount == 3) {  // 3번 연속 비밀번호 오류 시
				System.out.println("경찰 출동");
				break;
			}
			System.out.println("현재 " + benz.policeCount + "번 비밀번호 오류");
						
		}
					
	} else {
			System.out.println(benz.brand + "는 이미 시동이 켜져있습니다.");
	}
}

 

 

- 시동 끄기

if (choice == 2){  // 2. 시동 끄기
				
	if(benz.engineStop()) {
		System.out.println(benz.brand + " 시동 꺼짐");
		benz.check = false;
             
	} else {
		System.out.println(benz.brand + "는 이미 시동이 꺼져있습니다.");
		break; 
	}
	          
}

 

 

 

※ 전체 코드

import java.util.Scanner;

class Car {

	// 브랜드, 색상, 가격 
	String brand;
	String color;
	int price;
	boolean check;
	String pw = "0000";
	int policeCount;
	

	public Car() {;}
	
	
	public Car(String brand, String color, int price) {
		this.brand = brand;
		this.color = color;
		this.price = price;
	}
	
	
	public Car(String brand, String color, int price, String pw) {
		this.brand = brand;
		this.color = color;
		this.price = price;
		this.pw = pw;
	}
	


	// 시동 켜기
	boolean engineStart() {
		if(!check) {  // 시동이 꺼져있을 때(!check : false를 뜻한다.)
			return true;		
		} 
		return false;
	}
		
	
	// 시동 끄기
	boolean engineStop() {
		if(check) {  // 시동이 꺼져있을 때
			return true;		
		} 
		return false;
	}
	

	// [심화]
	// 시동을 켤 때, 비밀번호 4자리를 입력받는다.
	// 비밀번호가 일치하면 시동 켜짐
	// 비밀번호가 일치하지 않으면 현재 몇 회 연속 틀렸는지를 출력
	// 3회 연속 틀릴 시, "경찰 출동" 출력
	
	// 비밀번호 검사
	boolean checkPw(String pw) {

		// 문자열끼리 비교할 때에는 equals()를 사용한다.
		// "문자열".equals("문자열");
		return this.pw.equals(pw);
		
	}
	
	
}



public class Shop {	
	public static void main(String[] args) {
		
		Car benz = new Car("Benz", "Black", 35000);
		String msg = "1. 시동 켜기\n2. 시동 끄기";
		Scanner sc = new Scanner(System.in);
		int choice = 0;
		String pw = null;
	    
		while(true) {
			System.out.println(msg);
			choice = sc.nextInt();
			
			// 1. 시동 켜기
			if(choice == 1) {
				if(benz.engineStart()) {

					System.out.print("비밀번호 : ");
					pw = sc.next();
					
					if(benz.checkPw(pw)) {
						System.out.println(benz.brand + " 시동 켜짐");
						benz.policeCount = 0;
						benz.check = true;
					} else {
						benz.policeCount++;
						
						if(benz.policeCount == 3) {
							System.out.println("경찰 출동");
							break;
						}
						System.out.println("현재 " + benz.policeCount + "번 비밀번호 오류");
						
					}
					
				} else {
						System.out.println(benz.brand + "는 이미 시동이 켜져있습니다.");
				}
			} else if (choice == 2){  // 2. 시동 끄기
				
				if(benz.engineStop()) {
					System.out.println(benz.brand + " 시동 꺼짐");
					benz.check = false;
	             
				} else {
					System.out.println(benz.brand + "는 이미 시동이 꺼져있습니다.");
					break;
				}
	          
			} else {
	
				break;
			}
		}
	    
	}
}

 

결과

 

3회 연속 비밀번호 오류

 

비밀번호 오류 초기화

 

 

'ETC > 복습' 카테고리의 다른 글

[복습_JAVA] 22  (0) 2022.09.06
[복습_JAVA] 21  (0) 2022.09.02
[복습_JAVA] 19  (0) 2022.08.30
[복습_JAVA] 18  (0) 2022.08.28
[복습_JAVA] 17  (0) 2022.08.27