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 |