일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- MySQL
- 논문리뷰
- 문자열
- 프로그래머스
- 백준
- 해시를사용한집합과맵
- 논문구현
- 브루트포스알고리즘
- 큐
- 그리디
- C언어
- 수학
- 자료구조
- 정렬
- 이분탐색
- 프로그래머스sql
- 백준알고리즘
- Image Classification
- 그리디알고리즘
- C
- 소수판정
- 프로그래머스연습문제
- 이진탐색
- 프로그래머스코딩테스트
- 정수론
- C++
- 다이나믹프로그래밍
- SQL
- 구현
- 사칙연산
- Today
- Total
초보 개발자의 이야기, 릿허브
[명품 JAVA Programming] 6. 모듈과 패키지 개념 실습문제 풀이 본문
명품 JAVA Programming 실습 문제풀이 & 정답
❗ JAVA (IDE : Eclipse) 로 풀이했으며, 모든 문제에 대한 풀이방법을 제공하지 않을 수 있습니다.
각 문제에 대한 풀이방법은 여러가지가 있을 수 있으며, 해당 방법이 최선의 풀이방법이라고는 할 수 없습니다.
문제에 대한 질문, 오류에 대한 지적은 언제나 환영입니다.😊
1.
다음 main()이 실행되면 아래 예시와 같이 출력되도록 MyPoint 클래스를 작성하라.
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("다른 점");
}
Point(3,50)
다른점
< 정답 >
package example6_1;
class MyPoint {
int a;
int b;
// 2개의 인자를 받는 생성자
public MyPoint(int a, int b) {
this.a = a;
this.b = b;
}
public String toString() {
return "Point("+a+","+b+")";
}
public boolean equals(Object obj) {
MyPoint mp = (MyPoint)obj;
if(a==mp.a && b==mp.b) {
return true;
}
else
return false;
}
}
public class Point {
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.
중심을 나타내는 정수 x, y와 반지름 radius 필드를 가지는 Circle 클래스를 작성하고자 한다.
생성자는 3개의 인자(x, y, raidus)를 받아 해당 필드를 초기화하고,
equals() 메소드는 두 개의 Circle 객체의 중심이 같으면 같은 것으로 판별하도록 한다.
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("서로 다른 원");
}
원 a : Circle(2,3)반지름5
원 b : Circle(2,3)반지름30
같은 원
<정답>
package example6_2;
import example6_1.MyPoint;
class Circle {
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 c = (Circle)obj;
// 중심이 같으면 같은 원으로 판별
if(x==c.x && y==c.y) {
return true;
}
else
return false;
}
}
public class CircleEx {
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("서로 다른 원");
}
}
7.
Scanner를 이용하여 한 라인을 읽고, 공백으로 분리된 어절이 몇 개 들어 있는지 "그만"을 입력할 때까지 반복하는 프로그램을 작성하라.
[Hint] Scanner.nextLine()을 이용하면 빈칸을 포함하여 한 번에 한 줄을 읽을 수 있다.
>>I love Java.
어절 개수는 3
>>자바는 객체 지향 언어로서 매우 좋은 언어이다.
어절 개수는 7
>>그만
종료합니다...
(1) StringTokenizer 클래스를 이용하여 작성하라.
<정답>
package example6_7;
import java.util.*;
public class FindToken {
public static void main(String [] args) {
Scanner sc = new Scanner(System.in);
while (true) {
System.out.print(">> ");
String s = sc.nextLine();
if (s.equals("그만")) {
System.out.println("종료합니다...");
return;
}
StringTokenizer st = new StringTokenizer(s," ");
int token = st.countTokens();
System.out.println("어절 개수는 "+ token);
}
}
}
(2) String 클래스의 split() 메소드를 이용하여 작성하라.
<정답>
package example6_7;
import java.util.*;
public class FindToken {
public static void main(String [] args) {
Scanner sc = new Scanner(System.in);
while (true) {
System.out.print(">> ");
String s = sc.nextLine();
if (s.equals("그만")) {
System.out.println("종료합니다...");
return;
}
String str[] = s.split(" ");
System.out.println("어절 개수는 "+ str.length);
}
}
}
10.
갬블링 게임을 만들어보자. 두 사람이 게임을 진행한다.
이들의 이름을 키보드로 입력 받으며 각 사람은 Person 클래스로 작성하라.
그러므로 프로그램에는 2개의 Person 객체가 생성되어야 한다.
두 사람은 번갈아 가면서 게임을 진행하는데 각 사람이 자기 차례에서 <Enter> 키를 입력하면,
3개의 난수가 발생되고 이 숫자가 모두 같으면 승자가 되고 게임이 끝난다.
난수의 범위를 너무 크게 잡으면 3개의 숫자가 일치하게 나올 가능성이 적기 때문에 숫자의 범위는 1~3까지로 한다.
1번째 선수 이름>>수희
2번째 선수 이름>>연수
[수희]:
3 1 1 아쉽군요!
[연수]:
3 1 3 아쉽군요!
[수희]:
2 2 1 아쉽군요!
[연수]:
1 1 2 아쉽군요!
[수희]:
3 3 3 수희님이 이겼습니다!
<정답>
package example6_10;
import java.util.*;
class Person {
String name;
int num1, num2, num3;
// 생성자
public Person(String name) {
this.name = name;
}
// 게임 실행. 난수를 발생시키고, 해당 난수들이 모두 같으면 이김(true) 아니면 (false) 반환
public boolean game() {
num1 = (int)((Math.random()*3)+ 1);
num2 = (int)((Math.random()*3)+ 1);
num3 = (int)((Math.random()*3)+ 1);
if ((num1==num2) && (num2== num3)) {
return true;
}
else {
return false;
}
}
}
public class GamblingGame {
public static void main(String [] args) {
Scanner sc = new Scanner(System.in);
System.out.print("1번째 선수 이름 >> ");
String name1 = sc.nextLine();
System.out.print("2번째 선수 이름 >> ");
String name2 = sc.nextLine();
// 2개의 Person 객체 생성
Person p1 = new Person(name1);
Person p2 = new Person(name2);
while(true) {
// person1
System.out.print("["+p1.name+"]: ");
String buffer = sc.nextLine();
if(p1.game()== true) {
System.out.print(p1.num1 + " " + p1.num2 + " " +p1.num3);
System.out.println(p1.name + "님이 이겼습니다!");
break;
}
else {
System.out.print(p1.num1 + " " + p1.num2 + " " +p1.num3);
System.out.println("아쉽군요!");
}
// person2
System.out.print("["+p2.name+"]: ");
buffer = sc.nextLine();
if(p2.game()== true) {
System.out.print(p2.num1 + " " + p2.num2 + " " +p2.num3);
System.out.println(p2.name + "님이 이겼습니다!");
break;
}
else {
System.out.print(p2.num1 + " " + p2.num2 + " " +p2.num3);
System.out.println("아쉽군요!");
}
}
}
}