웹_프론트_백엔드/단과

[단과_JAVA] 2020.02.11

shine94 2020. 2. 12. 09:34

1. 배열을 통해 규칙성이 없는 것에도 규칙성을 부여할 수 있다.

 

 

2. 클래스 배열

 : 각 방에 객체가 있다. 따라서 한 번 접근해도 필드의 주소값이다.

   클래스명[] 배열명 = {new 생성자(), new 생성자(),....};

 

 

3. 오늘 실습코드

1) Road

package day20;

import java.util.Scanner;
//모든 자동차는 비밀번호가 있다.
//처음 출고시 자동차 비밀번호를 설정하지 않으면
//초기 비밀번호는 0000으로 한다.

//시동을 켤때 비밀번호를 입력하여
//자동차의 비밀번호와 일치하면 켜진다.
//3번 연속 비밀번호 오류시 "경찰 출동중"을 출력하고 break를 사용한다.
class Car{
	String brand;
	String color;
	int price;
	boolean check;
	String pw = "0000";
	int policeCnt;
	
	public Car() {}
	
	public Car(String brand, String color, int price, String pw) {
		super();
		this.brand = brand;
		this.color = color;
		this.price = price;
		this.pw = pw;
	}

	public Car(String brand, String color, int price) {
		super();
		this.brand = brand;
		this.color = color;
		this.price = price;
	}
	
	boolean checkPw(String pw){
		boolean check = false;
		if(this.pw.equals(pw)) {
			check = true;
		}
		return check;
	}
	
	String getPw() {
		String pw = "";
		System.out.print("비밀번호 : ");
		pw = new Scanner(System.in).next();
		return pw;
	}
	
	//시동이 이미 켜져있으면 경고메시지 출력
	void engineStart() {
		if(!check) {
			if(checkPw(getPw())) {
				System.out.println(this.brand + " 시동 킴");
				check = true;
				policeCnt = 0;
				
			}else {
				policeCnt++;
				
				if(policeCnt == 3) {
					System.out.println("경찰 출동 중");
				}else {
					System.out.println("비밀번호 오류");
				}
			}
		}else {
			System.out.println("이미 켜져있습니다.");
		}
	}

	//시동이 이미 꺼져있으면 경고메시지 출력
	void engineStop() {
		if(check) {
			System.out.println(this.brand + " 시동 끔");
			check = false;
		}else {
			System.out.println("이미 꺼져있습니다.");
		}
	}
}
public class Road {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		
		int choice = 0;
		Car myCar = new Car("Benz", "Black", 9000);
		
		while(true) {
			System.out.println("1.시동 켜기\n2.시동 끄기");
			choice = sc.nextInt();
			
			if(choice == 1) {
				myCar.engineStart();
				if(myCar.policeCnt == 3) {break;}
				
			}else if(choice == 2) {
				//첫번째 방법
				//반복문 탈출 조건이 없음
//				myCar.engineStop();

				//두번째 방법
				//시동을 끄는 행위를 하는 경우 반복문 탈출
				if(myCar.check) {
					//시동이 켜져있는 경우
					//시동을 끄고 탈출
					myCar.engineStop();
					break;
				}else {
					//시동이 꺼져 있는 경우
					myCar.engineStop();
				}
			}
		}
	}
}

 

2) 모여라 셀럽동물 게임!

** Animal 클래스 **

** {;} 일부러 비워뒀으니깐 건들지 말라는 뜻

   부득이하게 변경해야한다면 그 전 코드 반드시 주석처리하고 새로 작성해야 함**

package day20;
//모여라 셀럽동물!(유아용 게임)
//동물(캐릭터)은 여러마리

import java.util.Random;
import java.util.Scanner;

//이름, 먹이 종류, 먹이 개수, 체력

//생성자 만들기(기본 생성자도 선언)

//먹기 : 먹이갯수 1감소 체력 1증가
//자기 : 3초당 체력 1씩 증가
//산책하기 : 랜덤한 퀴즈 맞추면 체력 2증가, 틀리면 체력 1감소, 무조건 체력은 1감소
public class Animal {
	String name;
	String feed;
	int feed_cnt;
	int hp;
	
	public Animal() {}
	
	public Animal(String name, String feed, int feed_cnt, int hp) {
		super();
		this.name = name;
		this.feed = feed;
		this.feed_cnt = feed_cnt;
		this.hp = hp;
	}
	
	//먹기
	void eat() {
		if(feed_cnt != 0) {
			feed_cnt --;
			hp ++;
			System.out.println(name + "이(가) " + feed + "을(를) 먹는 중...");
			System.out.println("현재 체력 : " + hp);
			System.out.println("먹이 갯수 : " + feed_cnt);
		}else {
			System.out.println(name + " 먹이가 없어요~ 산책하고 오세요!!");
		}
	}
	//자기
	void sleep() {
		System.out.print("자는중");
		for (int i = 0; i < 3; i++) {
			System.out.print(".");
			try {Thread.sleep(1000);} catch (InterruptedException e) {;}
		}
		System.out.println();
	}

	//산책하기
	void walk(String[] arQ, int[] arA) {
		
		if(hp > 1) {
			hp--;
			
			Random r = new Random();
			Scanner sc = new Scanner(System.in);
			int idx = r.nextInt(arQ.length);
			int choice = 0;
			System.out.println(arQ[idx]);
			choice = sc.nextInt();
			
			if(choice == arA[idx]) {
				System.out.println("와~ 잘했어요! 정답!");
				feed_cnt += 2;
			}else {
				System.out.println("아쉬워요! 다시 한번 도전 해보세요!");
				hp--;
				if(hp == 0) {
					System.out.println(name + " 회복중!!");
					sleep();
				}
			}
		}else {
			System.out.println("체력이 부족해요!! 잠을 자고 오세요!");
		}
	}
}

 

** Zoo 메인 클래스, 다음 시간에 클래스 배열을 이용한 효율적인 코드를 만들 예정**

package day20;

public class Zoo {
	public static void main(String[] args) {
		Animal dog = new Animal("멍멍이", "뼈다귀", 5, 5);
		Animal penguin = new Animal("펭수", "생선", 7, 3);
		Animal pig = new Animal("꿀꿀이", "감자", 9, 1);
		
		
		//클래스 배열
		//각 방에 객체가 있다. 따라서 한 번 접근해도 필드의 주소값이다.
		//클래스명[] 배열명 = {new 생성자(), new 생성자(),....};
		//Animal[] arAnimal = {dog, penguin, pig};
		
		
		
	}
}

 

 

4. 단축키

* Alt + Shift + Z : 예외 처리(try~catch)

'웹_프론트_백엔드 > 단과' 카테고리의 다른 글

[단과_JAVA] 2020.02.13  (0) 2020.02.14
[단과_JAVA] 2020.02.12  (0) 2020.02.12
[단과_JAVA] 2020.02.10  (0) 2020.02.11
[단과_JAVA] 2020.02.07  (0) 2020.02.10
[단과_JAVA] 2020.02.06  (0) 2020.02.06