728x90
728x170
명품 JAVA Programming 6장 실습문제 정답
명품 JAVA Programming 6장 실습문제 정답
1번
public class MyPoint {
private int x, y;
public MyPoint(int x, int y) {
this.x = x;
this.y = y;
}
public String toString() {
return "Point(" + x + "," + y + ")";
}
public boolean equals(Object p) {
MyPoint po = (MyPoint)p;
if(x == po.x && y == po.y)
return true;
else
return false;
}
public static void main(String [] args) {
MyPoint p = new MyPoint(3, 50);
MyPoint q = new MyPoint(4, 50);
System.out.println(p);
if(p.equals(q)) System.out.println("같은 점");
else System.out.println("다른 점");
}
}
2번
class Circle {
private int x, y, radius;
public Circle(int x, int y, int radius) {
this.x = x;
this.y = y;
this.radius = radius;
}
public String toString() {
return "Circle(" + x + "," + y + ")" + "반지름" + radius;
}
public boolean equals(Object obj) {
Circle b = (Circle)obj;
if(x == b.x && y == b.y) return true;
else return false;
}
}
public class CircleApp {
public static void main(String[] args) {
Circle a = new Circle(2,3,5); // 중심 (2,3)에 반지름 5인 원
Circle b = new Circle(2,3,30); // 중심 (2,3)에 반지름 30인 원
System.out.println("원 a : " + a);
System.out.println("원 b : " + b);
if(a.equals(b))
System.out.println("같은 원");
else
System.out.println("서로 다른 원");
}
}
3번
package etc;
public class Calc {
private int x, y;
public Calc(int x, int y) { this.x = x; this.y = y; }
public int sum() { return x+y; }
}
package main;
import etc.Calc;
public class MainApp {
public static void main(String[] args) {
Calc c = new Calc(10, 20);
System.out.println(c.sum());
}
}
4번
package app;
import base.Shape;
import derived.Circle;
public class GraphicEditor {
public static void main(String[] args) {
Shape shape = new Circle();
shape.draw();
}
}
package base;
public class Shape {
public void draw() { System.out.println("Shape"); }
}
package derived;
import base.Shape;
public class Circle extends Shape {
public void draw() { System.out.println("Circle"); }
}
5번
import java.util.Calendar;
public class GoodMorning {
public static void main(String[] args) {
Calendar now = Calendar.getInstance(); // Calendar 객체 생성
// now는 현재 시간 값을 가지고 있음
int hourOfDay = now.get(Calendar.HOUR_OF_DAY);
int minute = now.get(Calendar.MINUTE);
System.out.println("현재 시간은 " + hourOfDay + "시 " + minute + "분입니다.");
if(hourOfDay > 4 && hourOfDay < 12)
System.out.println("Good Morning");
else if(hourOfDay >= 12 && hourOfDay < 18)
System.out.println("Good Afternoon");
else if(hourOfDay >= 18 && hourOfDay < 22)
System.out.println("Good Evening");
else
System.out.println("Good Night");
}
}
6번
import java.util.Calendar;
import java.util.Scanner;
class Player {
private Scanner scanner = new Scanner(System.in);
private String name;
public Player(String name) {
this.name = name;
}
public String getName() { return name; }
public int turn() {
System.out.print(name + " 시작 <Enter>키>>");
// 헌재의 초 시간 출력
String key = scanner.nextLine(); // <Enter>키를 읽음
Calendar c = Calendar.getInstance();
int startSecond = c.get(Calendar.SECOND);
System.out.println("\t현재 초 시간 = " + startSecond);
System.out.print("10초 예상 후 <Enter>키>>");
// <Enter> 키 때가지 기다림
key = scanner.nextLine(); // <Enter>키를 읽음
c = Calendar.getInstance();
int endSecond = c.get(Calendar.SECOND);
System.out.println("\t현재 초 시간 = " + endSecond);
if(endSecond < startSecond)
endSecond += 60; // 60초 후로 만들어야 함
return Math.abs(startSecond-endSecond); // 절대값 구하기
}
}
public class GuessSecondGame {
public GuessSecondGame() {
}
public void run() {
Player player[] = new Player[2];
player[0] = new Player("황기태");
player[1] = new Player("이재문");
System.out.println("10초에 가까운 사람이 이기는 게임입니다.");
int duration1 = player[0].turn();
int duration2 = player[1].turn();
System.out.print(player[0].getName()+"의 결과 " + duration1 + ", ");
System.out.print(player[1].getName()+"의 결과 " + duration2);
System.out.print(", 승자는 ");
if(Math.abs(10-duration1) < Math.abs(10-duration2)) // 시간 간격이 작은 사람이 이김
System.out.println(player[0].getName());
else
System.out.println(player[1].getName());
}
public static void main(String[] args) {
GuessSecondGame game = new GuessSecondGame();
game.run();
}
}
7번
(1)
import java.util.*;
public class WordCount {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
while(true) {
System.out.print(">>");
String s = scanner.nextLine();
if(s.equals("그만")) {
System.out.println("종료합니다...");
break;
}
StringTokenizer st = new StringTokenizer(s, " ");
System.out.println("어절 개수는 " + st.countTokens());
}
scanner.close();
}
}
(2)
import java.util.*;
public class WordCount {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
while(true) {
System.out.print(">>");
String s = scanner.nextLine();
if(s.equals("그만")) {
System.out.println("종료합니다...");
break;
}
String [] words = s.split(" ");
System.out.println("어절 개수는 " + words.length);
}
scanner.close();
}
}
8번
import java.util.Scanner;
public class StringRotate {
public static void main(String[] args) {
System.out.println("문자열을 입력하세요. 빈 칸이나 있어도 되고 영어 한글 모두 됩니다.");
Scanner scanner = new Scanner(System.in);
String text = scanner.nextLine();
int len = text.length();
for(int i=0; i<len; i++) {
String first = text.substring(0,1); //인덱스 0에서 1까지 1개 문자
String last = text.substring(1); // 인덱스 1에서 끌까지
text = last + first;
System.out.println(text);
}
scanner.close();;
}
}
9번
import java.util.Scanner;
class Player {
private String name;
private Scanner scanner = new Scanner(System.in);
public Player(String name) {
this.name = name;
}
public String getName() { return name; }
public int turn() {
System.out.print(name + "[가위(1), 바위(2), 보(3), 끝내기(4)]>>");
return scanner.nextInt();
}
}
class Computer extends Player {
public Computer(String name) {
super(name);
}
public int turn() {
return (int)(Math.random() * 3 + 1); // 1부터 3까지의 수
}
}
public class Kawibawibo {
private final String s[] = {"가위", "바위", "보"};
private Player [] players = new Player[2];
public Kawibawibo() {
players[0] = new Player("철수");
players[1] = new Computer("컴퓨터");
}
public void run() {
int userChoice, computerChoice;
while (true) {
userChoice = players[0].turn(); // 철수 차례
if (userChoice == 4)
break; // 게임 끝내기
computerChoice = players[1].turn(); // 컴퓨터 차례
if (userChoice < 1 || userChoice > 3) {
System.out.println("잘못 입력하셨습니다.");
}
else {
System.out.print(players[0].getName() + "(" + s[userChoice-1] + ")" + " : ");
System.out.println(players[1].getName() + "(" + s[computerChoice-1] + ")");
int diff = userChoice - computerChoice;
switch (diff) {
case 0: // 같은 것을 낸 경우
System.out.println("비겼습니다.");
break;
case -1: // 사용자가 가위, 컴퓨터가 바위 또는 사용자가 바위, 컴퓨터가 보
case 2: // 사용자가 보, 컴퓨터가 가위
System.out.println(players[1].getName()+"가 이겼습니다.");
break;
case 1: // 사용자가 바위, 컴퓨터가 가위 또는 사용자가 보, 컴퓨터가 바위
case -2: // 사용자가 가위, 컴퓨터가 보
System.out.println(players[0].getName()+"가 이겼습니다.");
}
}
}
}
public static void main (String[] args) {
Kawibawibo game = new Kawibawibo();
game.run();
}
}
10번
import java.util.Scanner;
public class GamblingGame {
private Player [] p = new Player[2]; // 2대신 3으로 고치면 3명이 하는 게임이 된다.
private Scanner scanner = new Scanner(System.in);
public GamblingGame() {
for(int i=0; i<p.length; i++) {
System.out.print((i+1)+"번째 선수 이름>>");
p[i] = new Player(scanner.nextLine());
}
}
public void run() {
int i=0;
while (true) {
if (p[i].turn()) { // 선수 i의 세 수가 모두 같은 경우
System.out.println(p[i].getName()+"님이 이겼습니다!");
break;
}
else {
System.out.println("아쉽군요!");
i++; // 다음 사람
i = i%p.length; // 두 사람이 번갈아 게임함
}
}
}
public static void main(String [] args) {
GamblingGame game = new GamblingGame();
game.run();
}
}
import java.util.Scanner;
public class Player {
private String name;
private Scanner scanner = new Scanner(System.in);
public Player(String name) {
this.name = name;
}
public String getName() {return name;}
public void getEnterKey() {
scanner.nextLine(); // <Enter> 키를 기다린다.
}
public boolean turn() {
System.out.print("[" + name + "]:<Enter>");
getEnterKey(); // 참가자가 <Enter>키 입력할 때까지 기다림
int num[] = new int [3]; // 3개의 난수를 저장하기 위한 배열
// 3개의 난수 생성
for (int i=0; i<num.length; i++) {
num[i] = (int)(Math.random()*3 + 1); // 1~3까지의 임의의 수 발생
}
// 3개의 난수 출력
System.out.print("\t\t");
for (int i=0; i<num.length; i++) {
System.out.print(num[i]+"\t");
}
// 3개의 난수가 같은지 비교
boolean result = true;
for (int i=0; i<num.length; i++) {
if (num[i] != num[0]) { // 하나라도 다르면 false
result = false; // 같지 않음
break;
}
}
return result; // result가 true 이면 승리
}
}
11번
import java.util.Scanner;
public class WordReplace {
public static void main(String[] args) {
System.out.print(">>");
Scanner scanner = new Scanner(System.in);
String text = scanner.nextLine(); // 한 라인을 문자열로 읽는다.
StringBuffer sb = new StringBuffer(text);
while(true) {
System.out.print("명령: ");
String cmd = scanner.nextLine(); // 한 라인을 문자열로 읽는다.
if(cmd.equals("그만")) {
System.out.print("종료합니다");
break;
}
String [] tokens = cmd.split("!");
if(tokens.length != 2) {
System.out.println("잘못된 명령입니다!");
}
else {
if(tokens[0].length() == 0 || tokens[1].length() == 0) {
System.out.println("잘못된 명령입니다!");
continue;
}
int index = sb.indexOf(tokens[0]);
if(index == -1) { // not found!
System.out.println("찾을 수 없습니다!");
continue;
}
sb.replace(index, index+tokens[0].length(), tokens[1]);
System.out.println(sb.toString());
}
}
scanner.close();
}
}
12번
import java.util.Scanner;
public class GamblingGame {
private Player [] p;
private Scanner scanner = new Scanner(System.in);
public GamblingGame() {
System.out.print("갬블링 게임에 참여할 선수 숫자>>");
int nPlayers = scanner.nextInt();
scanner.nextLine(); // 버퍼에 입력된 <Enter>키 제거.
p = new Player[nPlayers]; // 2대신 3으로 고치면 3명이 하는 게임이 된다.
for(int i=0; i<p.length; i++) {
System.out.print((i+1)+"번째 선수 이름>>");
p[i] = new Player(scanner.nextLine());
}
}
public void run() {
int i=0;
while (true) {
if (p[i].turn()) { // 선수 i의 세 수가 모두 같은 경우
System.out.println(p[i].getName()+"님이 이겼습니다!");
break;
}
else {
System.out.println("아쉽군요!");
i++; // 다음 사람
i = i%p.length; // 두 사람이 번갈아 게임함
}
}
}
public static void main(String [] args) {
GamblingGame game = new GamblingGame();
game.run();
}
}
import java.util.Scanner;
public class Player {
private String name;
private Scanner scanner = new Scanner(System.in);
public Player(String name) {
this.name = name;
}
public String getName() {return name;}
public void getEnterKey() {
scanner.nextLine(); // <Enter> 키를 기다린다.
}
public boolean turn() {
System.out.print("[" + name + "]:<Enter>");
getEnterKey(); // 참가자가 <Enter>키 입력할 때까지 기다림
int num[] = new int [3]; // 3개의 난수를 저장하기 위한 배열
// 3개의 난수 생성
for (int i=0; i<num.length; i++) {
num[i] = (int)(Math.random()*3 + 1); // 1~3까지의 임의의 수 발생
}
// 3개의 난수 출력
System.out.print("\t\t");
for (int i=0; i<num.length; i++) {
System.out.print(num[i]+"\t");
}
// 3개의 난수가 같은지 비교
boolean result = true;
for (int i=0; i<num.length; i++) {
if (num[i] != num[0]) { // 하나라도 다르면 false
result = false; // 같지 않음
break;
}
}
return result; // result가 true 이면 승리
}
}
728x90
그리드형
'IT > 프로그래밍' 카테고리의 다른 글
명품 JAVA Programming 8장 실습문제 정답 (0) | 2020.12.12 |
---|---|
명품 JAVA Programming 7장 실습문제 정답 (0) | 2020.12.12 |
명품 JAVA Programming 5장 실습문제 정답 (0) | 2020.12.12 |
명품 JAVA Programming 4장 실습문제 정답 (0) | 2020.12.12 |
명품 JAVA Programming 3장 실습문제 정답 (0) | 2020.12.12 |
댓글