코딩 연습장/JAVA

자바 4장 연습문제(클래스와 객체)-2

Do아 2021. 3. 19. 19:46
728x90

2021/03/14(일)

문제) --- 내풀이는 밑에

4-5) 다음 설명대로 Circle 클래스와 CircleManager 클래스를 완성하라.

import java.util.Scanner;

class Circle{
	private double x, y;
	private int radius;
	public Circle(double x, double y, int radius) {
		
	}
	public void show() {
		
	}
}
public class CircleManager {
	public static void main(String[] args) {
		Scanner scanner = 
		Circle c[] = 
		
		for(int i=0; i<     ; i++) {
			System.out.print("x, y, radius >>");
											
			// x값이 읽기
			// y값이 읽기
			// 반지름 읽기
			
			c[i] =  
			
		}
		for(int i=0; i<c.length; i++) 
			//모든 Circle 객체 출력
			
			scanner.close();		
	}
}

다음 실행 결과와 같이 3개의 Circle 객체 배열을 만들고 x,y,radius 값을 읽어 3개의 Circle 객체를 만들고 show()를 이용하여 이들을 모두 출력한다.

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

4-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

4-7) 하루의 할 일을 표현하는 클래스 Day는 다음과 같다. 한 달의 할 일을 표현하는 MonthSchedule 클래스를 작성하라.

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+"입니다.");
	}
}

MonthSchedule 클래스에는 Day 객체 배열과 적절한 필드, 메소드를 작성하고 실행 예시처럼 입력, 보기, 끝내기 등의 3개의 기능을 작성하라.

이번달 스케쥴 관리 프로그램.
할일(입력:1, 보기:2, 끝내기:3) >> 1
날짜(1~30)? 1
할일(빈칸없이입력)> 자바공부

할일(입력:1, 보기:2, 끝내기:3) >> 2
날짜(1~30)? 1
1일의 할 일은 자바공부입니다.

할일(입력:1, 보기:2, 끝내기:3) >> 3
프로그램을 종료합니다.

4-8) 이름(name), 전화번호(tel) 필드와 생성자 등을 가진 Phone 클래스를 작성하고, 실행 예시와 같이 작동하는 PhoneBook 클래스를 작성하라.

인원수 >> 3
이름과 전화번호(이름과 번호는 빈 칸없이 입력)>> 황기태 777-7777
이름과 전화번호(이름과 번호는 빈 칸없이 입력)>> 나명품 999-9999
이름과 전화번호(이름과 번호는 빈 칸없이 입력)>> 최자바 333-1234
저장되었습니다...
검색할 이름>> 황기순
황기순이 없습니다.
검색할 이름>> 최자바
최자바의 번호는 333-1234 입니다.
검색할 이름>> 그만
​

내 풀이

4-5)

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) {
		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();		
	}
}

4-6)

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 int radius() {
		return radius;
	}
}
public class CircleManager {
	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		Circle c[] = new Circle[3];
		int max=0;
		
		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);
			
			//가장 큰 반지름을 max에 저장
			if(max<c[i].radius())
				max = c[i].radius();
		}
		
		//배열을 돌며 가장 큰 반지름이 저장되어 있는 max와 비교하여 같으면 출력
		for(int i=0; i<c.length; i++)
			if(max==c[i].radius())
				c[i].show();
			
		scanner.close();
	}
}

4-7)

import java.util.Scanner;

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+"입니다.");
	}
}
public class MonthSchedule {
	int month;
	Day[] day = null;
	Scanner scan = new Scanner(System.in);
	
	//생성자 초기화
	public MonthSchedule(int month) {
		this.month = month;
		day = new Day[month];
	}
	//입력(1)할 때 실행되는 메소드
	public void input(int date) {
		day[date] = new Day();
		System.out.print("할일(빈칸없이입력)?");
		String work = scan.next();
		day[date].set(work);
	}
	//보기(2)할 때 실행되는 메소드
	public void view(int date) {
		System.out.print(date+"일의 할 일은 ");
		day[date].show();	
	}
	//끝내기(3)할 때 실행되는 메소드
	public void finish() {
		System.out.println("프로그램을 종료합니다.");
		System.exit(0);
	}
	//처음 실행되는 메소드
	public void run() {
		System.out.print("이번달 스케줄 관리 프로그램.");
		
		while(true) {
			System.out.print("할일(입력:1, 보기:2, 끝내기:3)>>");
			int selectNumber = scan.nextInt();
			if(selectNumber ==1) {
				System.out.print("날짜(1~30)?");
				int date = scan.nextInt();
				input(date);
				System.out.println();
			}
			else if(selectNumber==2) {
				System.out.print("날짜(1~30)?");
				int date = scan.nextInt();
				view(date);
				System.out.println();
			}
			else {
				finish();
			}
		}		
	}
	public static void main(String[] args) {
		MonthSchedule april = new MonthSchedule(30);
		april.run();
	}
}

4-8)

import java.util.Scanner;

class Phone{
	private String name;
	private String phone;
	
	public Phone(String name, String phone) {
		this.name = name;
		this.phone = phone;
	}
	
	public String getName() {
		return name;
	}
	public String getPhone() {
		return phone;
	}
}

public class PhoneBook {
	Scanner scan = new Scanner(System.in);
	Phone[] phone = null;
	
	public void run() {
		System.out.print("인원수>>");
		int howManyPerson = scan.nextInt();
		phone = new Phone[howManyPerson];
		insert();
		search();
		
	}
	//인원수에 따라 이름과 전화번호 입력받는 메소드
	public void insert() {
		for(int i=0; i<phone.length; i++) {
			System.out.print("이름과 전화번호(이름과 번호는 빈 칸없이 입력)>>");
			String name = scan.next();
			String phoneNumber = scan.next();
			phone[i] = new Phone(name, phoneNumber);
			if(i==phone.length-1)
				System.out.println("저장되었습니다.");
		}
	}
	//이름을 검색하는 메소드
	public void search() {
		while(true) {
		System.out.print("검색할 이름>>");
		String searchName = scan.next();
			//입력받은 이름으로 배열검색
			for(int i=0; i<phone.length; i++) {
				//그만이라는 문자가 들어오면 종료
				if(searchName.equals("그만"))
					System.exit(0);
				//배열에 같은 이름이 있는경우
				else if(searchName.equals(phone[i].getName())) {
					System.out.println(phone[i].getName()+"의 번호는 "+phone[i].getPhone()+" 입니다.");
					break;
				}
				//배열에 같은 이름이 없는 경우
				else if(i==phone.length-1 && !(searchName.equals(phone[i].getName())))
					System.out.println(searchName+"이 없습니다.");
			}
		}	
	}
	
	public static void main(String[] args) {
		PhoneBook phoneBook = new PhoneBook();
		phoneBook.run();
	}
}
728x90