실습(메소드)
- 자동차 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;
}
}
}
}



'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 |