1. instanceof 연산자에 대하여 설명하시오.
// Inheritance is needed between address1 and address2. // Or compile error. boolean instanceof(classAddress address1, classAddress address2) { boolean answer; if (address1 >= address2) { answer = true; } else { answer = false; }; return answer; }
2. 갬블링 게임을 만들어 보자.
두 사람이 게임을 진행한다. 이들의 이름을 키보드로 입력 받으며 각 사람은 Person 클래스로 작성하라. 그러므로 프로그램에는 2개의 Person 객체가 생성되어야 한다. 두 사람은 번갈아 가면서 게임을 진행하는데 각 사람이 자기 차례에서 <Enter> 키를 입력하면, 3개의 난수가 발생되고 이 숫자가 모두 같으면 승자가 되고 게임이 끝난다. 난수의 범위를 너무 크게 잡으면 3개의 숫자가 일치하게 나올 가능성이 적기 때문에 숫자의 범위는 1~3까지로 한다.
// // code // import java.util.*; import java.util.concurrent.ThreadLocalRandom; // class Person { private String name; // Person(String name) { this.name = name; } String getName() { return this.name; } } class PrintStringBuilder { private static StringBuilder print = new StringBuilder(); PrintStringBuilder() { } static void intro() { print.append("참가자의 이름을 입력해주세요: "); System.out.print(print); print.setLength(0); } static void victory(String name) { print.append(name); print.append("님이 이겼습니다. 게임을 종료합니다."); System.out.print(print); print.setLength(0); } static void randomNums(int[] nums) { for (int i = 0; i < nums.length; i++) { print.append(i + 1); print.append("번째 숫자는 "); print.append(nums[i]); print.append(" 입니다.\n"); }; System.out.print(print); print.setLength(0); } static void randomStart(String name) { print.append(name); print.append("님의 차례입니다. 진행하시려면 <Enter>를 눌러주세요."); System.out.print(print); print.setLength(0); } } class GameGambling { private static final int PARTICIPANTS_NUM = 2; private static final int GAMBLE_NUM = 3; private static final int FIRST_NUM = 1; private static final int LAST_NUM = 3; // //static Scanner scanner = new Scanner(System.in, "Cp949"); //for korean characters in cmd.exe chcp 949 static Scanner scanner = new Scanner(System.in); // public static void main(String[] args) { Person[] participants = new Person[PARTICIPANTS_NUM]; // for (int i = 0; i < PARTICIPANTS_NUM; i++) { PrintStringBuilder.intro(); // String name = scanner.nextLine(); // participants[i] = new Person(name); }; randomRun: while(true) { for (int i = 0; i < PARTICIPANTS_NUM; i++) { String tempName = participants[i].getName(); // PrintStringBuilder.randomStart(tempName); scanner.nextLine(); // int[] gambleNums = new int[GAMBLE_NUM]; // boolean win = true; int firstNum = 0; for (int j = 0; j < GAMBLE_NUM; j++) { int tempRanNum = ThreadLocalRandom.current().nextInt(FIRST_NUM, LAST_NUM + 1); gambleNums[j] = tempRanNum; if (j == 0) { firstNum = tempRanNum; } else if (win && (firstNum != tempRanNum)) { win = false; }; }; PrintStringBuilder.randomNums(gambleNums); // if (win) { PrintStringBuilder.victory(tempName); break randomRun; }; }; }; scanner.close(); } }
// // print // 참가자의 이름을 입력해주세요: jk 참가자의 이름을 입력해주세요: hhoop jk님의 차례입니다. 진행하시려면 <Enter>를 눌러주세요. 1번째 숫자는 2 입니다. 2번째 숫자는 2 입니다. 3번째 숫자는 3 입니다. hhoop님의 차례입니다. 진행하시려면 <Enter>를 눌러주세요. 1번째 숫자는 2 입니다. 2번째 숫자는 2 입니다. 3번째 숫자는 2 입니다. hhoop님이 이겼습니다. 게임을 종료합니다.
7.다음을 만족하는 클래스 Employee를 작성하시오
(8번문제부터는 이것과 관련된 문제입니다).
- 클래스 Employee(직원)은 클래스 Regular(정규직)와 Temporary(비정규직)의 상위 클래스 - 필드: 이름, 나이, 주소, 부서, 월급 정보를 필드로 선언 - 생성자 : 이름, 나이, 주소, 부서를 지정하는 생성자 정의 - 메소드 printInfo() : 인자는 없고 자신의 필드 이름, 나이, 주소, 부서를 출력// // code // class Employee { static StringBuilder print = new StringBuilder(); // private String name; private int age; private String address; private String department; private int salary; Employee(String name, int age, String address, String department) { this.name = name; this.age = age; this.address = address; this.department = department; } void printInfo() { print.append("이름: "); print.append(this.name); print.append("\n나이: "); print.append(this.age); print.append("\n주소: "); print.append(this.address); print.append("\n부서: "); print.append(this.department); print.append("\n"); System.out.print(print); print.setLength(0); } } class Regular extends Employee { Regular(String name, int age, String address, String department) { super(name, age, address, department); } } class Temporary extends Employee { Temporary(String name, int age, String address, String department) { super(name, age, address, department); } }
8. 다음을 만족하는 클래스 Regular를 작성하시오. Series_02 (필수)
• 클래스 Regular는 위에서 구현된 클래스 Employee의 하위 클래스 • 생성자 : 이름, 나이, 주소, 부서를 지정하는 상위 생성자 호출 • Setter : 월급 정보 필드를 지정 • 메소드 printInfo() : 인자는 없고 "정규직"이라는 정보와 월급을 출력// // code // class Regular extends Employee { private int salary; Regular(String name, int age, String address, String department) { super(name, age, address, department); } void setSalary(int salary) { this.salary = salary; } void printInfo() { super.printInfo(); Employee.print.append("정규직\n"); Employee.print.append("월급: "); Employee.print.append(this.salary); Employee.print.append("\n"); System.out.print(Employee.print); Employee.print.setLength(0); } }