본문 바로가기

자바/명품 자바 프로그래밍

명품 자바 프로그래밍 6장 실습 문제 / 2021.12.28

1.

package Chapter6;

class MyPoint {
	private int x;
	private int y;
	public MyPoint(int x, int y) {
		this.x = x;
		this.y = y;
	}
	public String toString() {
		return"Point("+this.x+","+this.y+")";
	}
	public boolean equals(Object obj) {
		MyPoint m = (MyPoint)obj;
		if(x==m.x && y==m.y) return true;
		else return false;
	}
}
public class Example {
	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.

package Chapter6;

class Circle {
	private int x;
	private int y;
	private int 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 c = (Circle)obj;
		if(x==c.x && y==c.y) return true;
		else return false;
	}
}
public class Example {
	public static void main(String [] args) {
		Circle a = new Circle(2,3,5);
		Circle b = new Circle(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.

(1) etc 패키지

 

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; }
}

 

(2) main 패키지

 

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.

 

(1) base 패키지

 

package base;

public class Shape {
	public void draw() { System.out.println("Shape"); }
}

 

(2) derived 패키지

 

package derived;

import base.Shape;

public class Circle extends Shape {
	public void draw() { System.out.println("Circle"); }
}

 

(3) app 패키지

 

package app;

import base.Shape;
import derived.Circle;

public class GraphicEditor {
	public static void main(String[] args) {
		Shape shape = new Circle();
		shape.draw();
	}
}

5.

package Chapter6;
import java.util.Calendar;

public class Example {
	public static void main(String [] args) {
		Calendar now = Calendar.getInstance();
		
		int hour = now.get(Calendar.HOUR_OF_DAY);
		int minute = now.get(Calendar.MINUTE);
		System.out.println("현재 시간은 "+hour+"시 "+minute+"분 입니다.");

		if(hour > 4 && hour < 12) 
			System.out.println("Good Morning");
		else if(hour >= 12 && hour < 18) 
			System.out.println("Good Afternoon");
		else if(hour >= 18 && hour < 22) 
			System.out.println("Good Evening");
		else
			System.out.println("Good Night");	
	}
}

6.

package Chapter6;
import java.util.Scanner;
import java.util.Calendar;
class Person {
	Calendar now = Calendar.getInstance();
	Scanner sc = new Scanner(System.in);
	private String name, buffer;
	private int sec1, sec2;
	
	public Person(String name) {
		this.name = name;
	}
	
	public int game() {
		System.out.print(name+" 시작 <Enter>키  >>");
		sec1 = enter();
		System.out.print("10초 예상 후 <Enter>키  >>");
		sec2 = enter();
		if(sec1 < sec2)
			return sec2-sec1;
		else 
			return (60-sec1) + sec2;
	}
	
	public int enter() {
		buffer = sc.nextLine();
		now = Calendar.getInstance();		
		System.out.println("\t현재 초 시간 = "+ now.get(Calendar.SECOND));
		return now.get(Calendar.SECOND);
	}
}
public class Example {
	public static void main(String[] args) {
		Person person1 = new Person("황기태");
		Person person2 = new Person("이재문");
		
		System.out.println("10초에 가까운 사람이 이기는 게임입니다.");
		int result1 = person1.game();
		int result2 = person2.game();
		
		if(Math.abs(result1 - 10) < Math.abs(result2 - 10))
			System.out.println("황기태의 결과 "+result1+", 이재문의 결과 "+result2+", 승자는 황기태");
		else
			System.out.println("황기태의 결과 "+result1+", 이재문의 결과 "+result2+", 승자는 이재문");
	}
}

7.

 

(1) StringTokenizer 클래스를 이용하여 작성하라.

 

package Chapter6;
import java.util.Scanner;
import java.util.StringTokenizer;

public class Example {
	public static void main(String [] args) {
		Scanner sc = new Scanner(System.in);
		while(true) {
			System.out.print(">>");
			String a = sc.nextLine();
			if(a.equals("그만")) {
				System.out.println("종료합니다...");
				break;
			}
			StringTokenizer st = new StringTokenizer(a, " ");
			int n = st.countTokens();
			System.out.println("어절 개수는 "+ n);
		}
	}
}

 

(2) String 클래스의 split() 메소드를 이용하여 작성하라.

 

package Chapter6;
import java.util.Scanner;

public class Example {
	public static void main(String [] args) {
		Scanner sc = new Scanner(System.in);
		while(true) {
			System.out.print(">>");
			String a = sc.nextLine();
			if(a.equals("그만")) {
				System.out.println("종료합니다...");
				break;
			}
			String s[] = a.split(" ");
			int n = s.length;
			System.out.println("어절 개수는 "+ n);
		}
	}
}

8.

package Chapter6;
import java.util.Scanner;

public class Example {
	public static void main(String [] args) {
		Scanner sc = new Scanner(System.in);
		System.out.println("문자열을 입력하세요. 빈칸이나 있어도 되고 영어 한글 모두 됩니다.");
		String a = sc.nextLine();
		for(int i=1; i<a.length()+1; i++) {
			System.out.print(a.substring(i));
			System.out.println(a.substring(0, i));
		}
	}
}

9.

package Chapter6;
import java.util.Scanner;

public class Example {
	public static void main(String [] args) {
		Scanner sc = new Scanner(System.in);
		while(true) {
			System.out.print("철수[가위(1), 바위(2), 보(3), 끝내기(4)]>>");
			int number = sc.nextInt();
			int com = (int)(Math.random()*4+1);
			if(number == 4)
				break;
			if(number == 1) {
				if(com==1) {
					System.out.println("철수(가위) : 컴퓨터(가위)");
					System.out.println("무승부입니다.");
					continue;
				}
				else if(com==2) {
					System.out.println("철수(가위) : 컴퓨터(바위)");
					System.out.println("컴퓨터가 이겼습니다.");
					continue;
				}
				else {
					System.out.println("철수(가위) : 컴퓨터(보)");
					System.out.println("철수가 이겼습니다.");
					continue;
				}
			}
			if(number == 2) {
				if(com==1) {
					System.out.println("철수(바위) : 컴퓨터(가위)");
					System.out.println("철수가 이겼습니다.");
					continue;
				}
				else if(com==2) {
					System.out.println("철수(바위) : 컴퓨터(바위)");
					System.out.println("무승부입니다.");
					continue;
				}
				else {
					System.out.println("철수(바위) : 컴퓨터(보)");
					System.out.println("컴퓨터가 이겼습니다.");
					continue;
				}
			}
			if(number == 3) {
				if(com==1) {
					System.out.println("철수(보) : 컴퓨터(가위)");
					System.out.println("컴퓨터가 이겼습니다.");
					continue;
				}
				else if(com==2) {
					System.out.println("철수(보) : 컴퓨터(바위)");
					System.out.println("철수가 이겼습니다.");
					continue;
				}
				else {
					System.out.println("철수(보) : 컴퓨터(보)");
					System.out.println("무승부입니다.");
					continue;
				}
			}
		}
	}
}

10.

package Chapter6;
import java.util.Scanner;

class Person{
	String name;
	int number [] = new int [3];
	public Person(String name) {
		this.name = name;
	}
	int[] RandomNum() {
		for(int i=0; i<3; i++) {
			number[i] = (int)(Math.random()*3 + 1);
		}
		return number;
	}
}
public class Example {
	public static void main(String [] args) {
		Scanner sc = new Scanner(System.in);
		System.out.print("1번째 선수 이름>>");
		String str = sc.nextLine();
		Person one = new Person(str);
		
		System.out.print("2번째 선수 이름>>");
		String str2 = sc.nextLine();
		Person two = new Person(str2);
		
		while(true) {
			// 첫번째 사람
			System.out.print("["+one.name+"]:<Enter>");
			sc.nextLine();
			int number [] = one.RandomNum();
			for(int i=0; i<3; i++) {
				System.out.print(number[i] + " ");
			}

			if(number[0] == number[1] && number[0]==number[2]) {
				System.out.println(one.name+"님이 이겼습니다!");
				break;
			}
			else {
				System.out.println("아쉽군요!");
			}
			// 두번째 사람
			System.out.print("["+two.name+"]:<Enter>");
			sc.nextLine();
			int number2 [] = two.RandomNum();
			for(int i=0; i<3; i++) {
				System.out.print(number2[i] + " ");
			}

			if(number2[0] == number2[1] && number2[0]==number2[2]) {
				System.out.println(two.name+"님이 이겼습니다!");
				break;
			}
			else {
				System.out.println("아쉽군요!");
				continue;
			}
		}
	}
}

11.

package Chapter6;
import java.util.Scanner;

public class Example {
	public static void main(String [] args) {
		Scanner sc = new Scanner(System.in);
		System.out.print(">>");
		String str = sc.nextLine();
		StringBuffer sb = new StringBuffer(str);
		
		while(true) {
			System.out.print("명령: ");
			String change = sc.nextLine();
			if(change.equals("그만")) {
				System.out.println("종료합니다.");
				break;
			}
			String [] voca = change.split("!");
			if(voca.length != 2)
				System.out.println("잘못된 명령입니다!");
			if(voca[0].length() == 0 || voca[1].length() == 0) {
				System.out.println("잘못된 명령입니다!");
				continue;
			}
			// 바꿀 단어가 문장에 없으면 -1을 반환
			int index = sb.indexOf(voca[0]);
			if(index == -1) {
				System.out.println("찾을 수 없습니다!");
				continue;
			}
			sb.replace(index, index+voca[0].length(), voca[1]);
			System.out.println(sb.toString());
			
			
		}
	}
}

12.

package Chapter6;
import java.util.Scanner;

class Person{
	String name;
	int number [] = new int [3];
	public Person(String name) {
		this.name = name;
	}
	int[] RandomNum() {
		for(int i=0; i<3; i++) {
			number[i] = (int)(Math.random()*3 + 1);
		}
		return number;
	}
}
public class Example {
	public static void main(String [] args) {
		Scanner sc = new Scanner(System.in);
		System.out.print("갬블링 게임에 참여할 선수 숫자>>");
		int n = sc.nextInt();
		sc.nextLine();
		Person people [] = new Person [n];
		
		for(int i=0; i<n; i++) {
			System.out.print((i+1)+"번째 선수 이름>>");
			String str = sc.nextLine();
			people[i] = new Person(str);
			//System.out.println(people[i].name);
		}
		
		while(true) {
			for(int i=0; i<n; i++) {
				System.out.print("["+people[i].name+"]:<Enter>");
				sc.nextLine();
				int number [] = people[i].RandomNum();
				for(int j=0; j<3; j++) {
					System.out.print(number[j] + " ");
				}
				if(number[0] == number[1] && number[0]==number[2]) {
					System.out.println(people[i].name+"님이 이겼습니다!");
					return;
				}
				else {
					System.out.println("아쉽군요!");
				}
			}
		}
	}
}