5. 다음 설명대로 Circle 클래스와 CircleManager 클래스를 완성하라.
- 문제 생략 -
[결과]
x,y,radius >>3.0 3.0 5
x,y,radius >>2.5 2.7 6
x,y,radius >>5.0 2.0 4
(3.0,3.0)5
(2.5,2.7)6
(5.0,2.0)4
[문제풀이]
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
32
33
34
|
import java.util.Scanner;
class Circle{
private double x,y;
private int radius;
public Circle(double x, double y, int radius) {
this.x = x;
this.y = y;
this.radius = radius;
}
public void show() {
System.out.println("("+x+","+y+")"+radius);
}
}
public class CircleManager {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner scanner = new Scanner(System.in);
Circle c[] = new Circle[3];
for(int i = 0; i<c.length; i++) {
System.out.print("x,y,radius >>");
double x = scanner.nextDouble();
double y = scanner.nextDouble();
int radius = scanner.nextInt();
c[i] = new Circle(x,y,radius);
}
for(int i=0; i<c.length;i++)
c[i].show();
scanner.close();
}
}
|
cs |
6. 앞의 5번 문제는 정답이 공개되어 있다. 이 정답을 참고하여 Circle 클래스의 Circlemanager 클래스를 수정하여 다음 실행 결과처럼 되게 하라.
[실행결과]
x,y,radius >>3.0 3.0 5
x,y,radius >>2.5 2.7 6
x,y,radius >>5.0 2.0 4
가장 면적이 큰 원은(2.5,2.7)6
[풀이]
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
32
33
34
35
36
37
38
39
40
41
42
|
import java.util.Scanner;
class Circle{
private double x,y;
private int radius;
public Circle(double x, double y, int radius) {
this.x = x;
this.y = y;
this.radius = radius;
}
public void show() {
System.out.println("가장 면적이 큰 원은("+x+","+y+")"+radius);
}
public double square() {
return (radius)*(radius)*3.14;
}
}
public class CircleManager {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner scanner = new Scanner(System.in);
double biggest = 0;
Circle c[] = new Circle[3];
for(int i = 0; i<c.length; i++) {
System.out.print("x,y,radius >>");
double x = scanner.nextDouble();
double y = scanner.nextDouble();
int radius = scanner.nextInt();
c[i] = new Circle(x,y,radius);
}
for (int i = 0; i<3;i++) {
if(c[i].square() > biggest)
biggest = c[i].square();}
for(int i=0; i<c.length;i++)
if(biggest == c[i].square())
c[i].show();
scanner.close();
}
}
|
cs |
7. 하루 할 일을 표현하는 클래스 Day는 다음과 같다. 한 달의 할 일을 표현하는 MonthSchedule 클래스를 작성하라.
1
2
3
4
5
6
7
8
9
|
class Day {
private String work; //하루의 할 일을 나타내는 문자열
public void set(String work) { this.work = work; }
public String get() { return work; }
public void show() {
if(work == null) System.out.println("없습니다.");
else System.out.println(work+"입니다.");
}
}
|
cs |
MonthSchedule 클래스에는 Day 객체 배열과 적절한 필드, 메소드를 작성하고 실행 예시처럼 입력, 보기, 끝내기 등의 3개의 기능을 작성하라.
[실행결과]
이번달 스케쥴 관리 프로그램.
할일(입력:1, 보기:2, 끝내기:3) >>1
날짜(1~30)?1
할일(빈칸없이입력)?자바공부
할일(입력:1, 보기:2, 끝내기:3) >>2
날짜(1~30)?1
1일의 할 일은 자바공부입니다.
할일(입력:1, 보기:2, 끝내기:3) >>3
프로그램을 종료합니다.
[풀이]
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
|
package MonthSchedule;
import java.util.Scanner;
class Day {
private String work; // 하루의 할 일을 나타내는 문자열
public void set(String work) { this.work = work; } //void set()을 작성하여 work 변수에 값을 받습니다. 차후에 조건을 추가할 수도 있습니다.
public String get() { return work; } //get()을 작성하여 return 값으로 work가 출력되게 하는 메소드를 작성합니다.
public void show() {
if(work == null) System.out.println("없습니다.");
else System.out.println(work + "입니다.");
}
}
public class MonthSchedule {
private int nDays; //달 안에 있는 날들을 위한 정수 변수 nDays를 지정합니다.
private Day[] days; //Day Class를 배열로 지정합니다.
private Scanner scanner;
public MonthSchedule(int nDays) { //MonthSchedule의 실행자 작성
this.nDays = nDays;
this.days = new Day[nDays];
for(int i=0;i<days.length;i++) { // 앞에서 지정한 Day 클래스를 nDays만큼의 길이의 배열로 만듭니다.
days[i] = new Day();
}
scanner = new Scanner(System.in);
}
private void input() { // 1번 선택시 Day[]배열에 값을 입력시키기 위한 메소드를 작성합니다.
System.out.print("날짜(1~30)?");
int day = scanner.nextInt();
System.out.print("할일(빈칸없이입력)");
String work = scanner.next();
day--; //배열은 0에서부터 시작함으로 1부터 시작하는 날짜보다 1이 작습니다. 그래서 1을 빼줍니다.
if(day<0 || day>nDays) {
System.out.println("날짜를 잘못 입력했습니다");
return;
}
days[day].set(work); //days배열의 day 번째에 work값을 저장합니다.
}
private void view() { //2번을 눌렀을 시 보기를 출력하는 메소드입니다.
System.out.print("날짜(1~30)?");
int day = scanner.nextInt();
day--;
if(day<0 || day>nDays) {
System.out.println("날짜를 잘못 입력했습니다");
return;
}
System.out.print((day+1)+"일의 할일은 "); // 같은 이유로 여기서는 날짜가 출력되야 함으로 +1을 해줍니다.
days[day].show(); // show 메소드를 소환합니다.
}
private void finish() {
scanner.close();
System.out.println("프로그램을 종료합니다.");
}
public void run() {
System.out.println("이번달 스케줄 관리 프로그램");
while(true) {
System.out.print("할일(입력:1 ,보기:2, 끝내기3)>>");
int menu = scanner.nextInt();
switch(menu) {
case 1:input();
break; //반드시 break를 해줘야 while문에서 벗어날수 있습니다.
case 2:view();
break;
case 3: finish();
return; //return을 해주지 않으면 계속 돌아가서 오류가 납니다.
default :
System.out.println("잘못 입력했습니다");//
}
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
MonthSchedule april = new MonthSchedule(30);
april.run();
}
|
cs |
8. 이름(name), 전화번호(tel) 필드와 생성자 등을 가진 phone 클래스를 작성하고, 실행 예시와 같이 작동하는 PhoneBook 클래스를 작성하라
[실행 결과]
인원수>>3
이름과 전화번호(이름과 번호는 빈 칸 없이 입력)>>황기태 777-7777
이름과 전화번호(이름과 번호는 빈 칸 없이 입력)>>나명품 999-9999
이름과 전화번호(이름과 번호는 빈 칸 없이 입력)>>최자바 333-1234
저장되었습니다...
검색할 이름>>황기순
황기순이 없습니다.
검색할 이름>>최자바
최자바의 번호는 333-1234입니다
검색할 이름>>그만
[풀이]
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
|
import java.util.Scanner;
class Phone{
String name;
String tel;
Phone(String name, String tel) {
this.name = name;
this.tel = tel;
}
String getName() {return name;}
String getTel() {return tel;}
}
class PhoneBook{
Phone[] phone;
Scanner scanner;
PhoneBook(){
scanner = new Scanner(System.in);
}
void run() {
System.out.print("인원수>>");
int cnt = scanner.nextInt();
phone = new Phone[cnt]; //인원수 만큼 길이를 가지는 배열phone[]를 만듭니다.
for(int i = 0; i < cnt; i++) {
System.out.print("이름과 전화번호(이름과 번호는 빈 칸 없이 입력)>>");
String name = scanner.next();
String tel = scanner.next();
phone[i] = new Phone(name,tel); //그리고 phone[]배열에 지정해줍니다.
}
System.out.println("저장되었습니다...");
while(true) { //검색을 위한 while 문을 작성해줍니다.
System.out.print("검색할 이름>>");
String name = scanner.next();
if(name.contentEquals("그만")) break;
String tel = search(name); //tel 변수값을 찾기 위해 search() 메소드를 작성해줍니다.
if(tel==null)
System.out.println(name+"이 없습니다.");
else System.out.println(name+"의 번호는 "+tel+"입니다");
}
}
String search(String name) {
for(int i=0;i<phone.length;i++) {
if(phone[i].getName().equals(name)){
return phone[i].getTel();
}
}
return null; //번호없음을 표시하기 위해 return값을 null로 해줍니다.
}
public static void main(String[] args) {
// TODO Auto-generated method stub
PhoneBook phonebook = new PhoneBook();
phonebook.run(); //프로그램을 메인에서 실행합니다.
}
}
|
cs |
'프로그래밍 언어 > JAVA' 카테고리의 다른 글
<Java> 명품 Java programming 5장 5번, 6번, 7번, 8번 (0) | 2021.07.07 |
---|---|
<Java> 명품 Java programming 5장 실습문제 1 -2 해답 (0) | 2021.07.07 |
<Java> 명품 Java programming 4장 실습문제 1~4 해답 (0) | 2021.07.06 |
<Java> 자바의 정석 6장 7번 (인스턴스메서드 작성) (0) | 2021.07.04 |
<Java> 자바의 정석6장 21번, 22번, 23번, 24번 (0) | 2021.07.02 |