문제풀이/명품 자바 프로그래밍(개정4판)

명품 자바 프로그래밍(개정4판) 제 4장 실습문제

Hyeon-Uk 2020. 10. 12. 02:21
반응형

[1번]

class TV{
	private int inch,year;
	private String company;
	public TV(String c,int y,int i) {
		inch=i;
		year=y;
		company=c;
	}
	
	public void show() {
		System.out.println(company+"에서 만든 "+year+"년형 "+inch+"인치 TV");
	}
}

public class p0401 {	
	public static void main(String[] args) {
		TV myTV=new TV("LG",2017,32);
		myTV.show();
	}
}

[2번]

import java.util.Scanner;

class Grade{
	private int math,science,english;
	public Grade(int m,int s,int e) {
		math=m;
		science=s;
		english=e;
	}
	
	public int average() {
		return (math+science+english)/3;
	}
}

public class p0402 {	
	public static void main(String[] args) {
		Scanner scanner=new Scanner(System.in);
		
		System.out.print("수학, 과학, 영어 순으로 3개의 점수 입력>>");
		int math=scanner.nextInt();
		int science=scanner.nextInt();
		int english=scanner.nextInt();
		Grade me = new Grade(math,science,english);
		System.out.println("평균은 "+me.average());//average()는 평균을 계산하여 리턴
		scanner.close();
	}
}

[3번]

class Song{
	private String title,artist,country;
	private int year;
	
	public Song(){
	}
	public Song(String t,String a,int y,String c) {
		title=t;
		artist=a;
		year=y;
		country=c;
	}
	void show() {
		System.out.println(year+"년 "+country+"국적의 "+artist+"가 부른 "+title );
	}
}

[4번]

import java.util.Scanner;

class Rectangle{
	private int x,y,width,height;
	
	public Rectangle(int x,int y,int width,int height) {
		this.x=x;
		this.y=y;
		this.width=width;
		this.height=height;
	}
	
	public void show() {
		System.out.println("("+x+","+y+")에서 크기가 "+width+"x"+height+"인 사각형");
	}
	
	public boolean contains(Rectangle r) {
		if((x<r.x)&&(y<r.y)&&(x+width)>(r.x+r.width)&&(y+height)>(r.y+r.height)) {
			return true;
		}
		else {
			return false;
		}
	}
	
	public int square() {
		return height*width;
	}
}

public class p0404 {	
	public static void main(String[] args) {
		Rectangle r = new Rectangle(2,2,8,7);
		Rectangle s = new Rectangle(5,5,6,6);
		Rectangle t = new Rectangle(1,1,10,10);
		
		r.show();
		System.out.println("s의 면적은 "+s.square());
		if(t.contains(r)) System.out.println("t는 r을 포함합니다");
		if(t.contains(s)) System.out.println("t는 s를 포함합니다");
	}
}

[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];// 3개의 Circle 배열 선언
		for(int i=0; i< 3 ; 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); // Circle 객체 생성
		}
		for(int i=0;i<c.length;i++) c[i].show();//모든 Circle객체 출력
		scanner.close();
	}
}

반응형

[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 static void largestCircle(Circle c[]) {
		double max=Math.pow(c[0].radius, 2);
		int maxi=0;
		for(int i=1;i<c.length;i++) {
			if(max<Math.pow(c[i].radius, 2)) {
				max=Math.pow(c[i].radius, 2);
				maxi=i;
			}
		}
		System.out.print("가장 면적이 큰 원은 ");
		c[maxi].show();
	}
}

public class CircleManager {	
	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		Circle c []= new Circle[3];// 3개의 Circle 배열 선언
		for(int i=0; i< 3 ; 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); // Circle 객체 생성
		}
		Circle.largestCircle(c);
		scanner.close();
	}
}

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

class MonthSchedule{
	private Day array[];
	private Scanner sc;
	public MonthSchedule(int n) {
		sc=new Scanner(System.in);
		array=new Day[n];
	}
	public void input() {
		System.out.print("날짜(1~30)?");
		int day=sc.nextInt();
		System.out.print("할일(빈칸없이입력)?");
		String work=sc.next();
		array[day-1]=new Day();
		array[day-1].set(work);
	}
	public void view() {
		System.out.print("날짜(1~30)?");
		int day=sc.nextInt();
		System.out.print(day+"일의 할 일은");
		array[day-1].show();
	}
	public void run() {
		System.out.println("이번달 스케쥴 관리 프로그램.");
		System.out.print("할일(입력:1, 보기:2, 끝내기:3) >>");
		int op=sc.nextInt();
		while(op!=3) {
			if(op==1) {
				input();
			}
			else {
				view();
			}
			System.out.println();
			System.out.print("할일(입력:1, 보기:2, 끝내기:3) >>");
			op=sc.nextInt();
		}
		System.out.println("프로그램을 종료합니다.");
	}
}

public class p0407 {	
	public static void main(String[] args) {
		MonthSchedule april=new MonthSchedule(30);
		april.run();
	}
}

[8번]

import java.util.Scanner;

class Phone{
	String name,tel;
	public Phone(String name,String tel) {
		this.name=name;
		this.tel=tel;
	}
}

class PhoneBook{
	private Phone array[];
	int num;
	Scanner sc;
	public PhoneBook(int n) {
		array=new Phone[n];
		num=0;
		sc=new Scanner(System.in);
	}
	public void input(String name,String tel) {
		array[num++]=new Phone(name,tel);
	}
	public void find(String name) {
		for(int i=0;i<num;i++) {
			if(array[i].name.equals(name)) {
				System.out.println(name+"의 번호는 "+array[i].tel+" 입니다");
				return;
			}
		}
		System.out.println(name+" 이 없습니다.");
	}
	public void run() {
		String st;
		System.out.print("검색할 이름>>");
		st=sc.next();
		while(!st.equals("그만")) {
			find(st);
			System.out.print("검색할 이름>>");
			st=sc.next();
		}
	}
}

public class p0408 {	
	public static void main(String[] args) {
		PhoneBook pb;
		Scanner s=new Scanner(System.in);
		System.out.print("인원수>>");
		int n=s.nextInt();
		pb=new PhoneBook(n);
		for(int i=0;i<n;i++) {
			System.out.print("이름과 전화번호(이름과 번호는 빈 칸없이 입력)>>");
			String name=s.next();
			String tel=s.next();
			pb.input(name, tel);
		}
		System.out.println("저장되었습니다.....");
		pb.run();
		
	}
}

[9번]

import java.util.Scanner;

class ArrayUtil{
	public static int [] concat(int[] a,int[] b) {
		int nArray[]=new int[a.length+b.length];
		int index=0;
		for(int i=0;i<a.length;i++) {
			nArray[index++]=a[i];
		}
		for(int i=0;i<b.length;i++) {
			nArray[index++]=b[i];
		}
		return nArray;
	}
	public static void print(int[] a) {
		System.out.print("[ ");
		for(int i=0;i<a.length;i++) {
			System.out.print(a[i]+" ");
		}
		System.out.print("]");
		return;
	}
}

public class StaticEx {	
	public static void main(String[] args) {
		int[] array1= {1,5,7,9};
		int[] array2= {3,6,-1,100,77};
		int[] array3= ArrayUtil.concat(array1, array2);
		ArrayUtil.print(array3);
	}
}

[10번]

import java.util.Scanner;

class Dictionary{
	private static String[] kor= {"사랑","아기","돈","미래","희망"};
	private static String[] eng= {"love","baby","money","future","hope"};
	public static String kor2Eng(String word) {
		for(int i=0;i<kor.length;i++) {
			if(kor[i].equals(word)) {
				return eng[i];
			}
		}
		return null;
	}
}

public class p0410 {	
	public static void main(String[] args) {
		Scanner sc=new Scanner(System.in);
		System.out.println("한영 단어 검색 프로그램입니다.");
		System.out.print("한글 단어?");
		String st=sc.next();
		
		while(!st.equals("그만")) {
			String result=Dictionary.kor2Eng(st);
			if(result!=null) {
				System.out.println(st+"는 "+result);
			}
			else {
				System.out.println(st+"는 저의 사전에 없습니다.");
			}
			System.out.print("한글 단어?");
			st=sc.next();
		}
	}
}

[11번]

class Add{
	int a,b;
	public void setValue(int a,int b) {
		this.a=a;
		this.b=b;
	}
	public void calculate() {
		System.out.println(a+b);
	}
}
class Sub{
	int a,b;
	public void setValue(int a,int b) {
		this.a=a;
		this.b=b;
	}
	public void calculate() {
		System.out.println(a-b);
	}
}
class Mul{
	int a,b;
	public void setValue(int a,int b) {
		this.a=a;
		this.b=b;
	}
	public void calculate() {
		System.out.println(a*b);
	}
}
class Div{
	int a,b;
	public void setValue(int a,int b) {
		this.a=a;
		this.b=b;
	}
	public void calculate() {
		if(b==0) {
			System.out.println("0으로 나눌 수 없어요");
		}
		else {
			System.out.println(a/b);
		}
	}
}

public class p0411{	
	public static void main(String[] args) {
		Scanner sc=new Scanner(System.in);
		System.out.print("두 정수와 연산자를 입력하시오>>");
		int a=sc.nextInt();
		int b=sc.nextInt();
		String op=sc.next();
		switch(op.charAt(0)) {
		case '+':
			Add add=new Add();
			add.setValue(a, b);
			add.calculate();
			break;
		case '-':
			Sub sub=new Sub();
			sub.setValue(a, b);
			sub.calculate();
			break;
		case '*':
			Mul mul=new Mul();
			mul.setValue(a, b);
			mul.calculate();
			break;
		case '/':
			Div div=new Div();
			div.setValue(a, b);
			div.calculate();
			break;
		}
	}
}

상속을 이용한 경우>>

import java.util.Scanner;

class superClass{
	public int a,b;
	public void setValue(int a,int b) {
		this.a=a;
		this.b=b;
	}
	public void calculate() {}
}

class Add extends superClass{
	@Override
	public void calculate() {
		System.out.println(a+b);
	}
}
class Sub extends superClass{
	@Override
	public void calculate() {
		System.out.println(a-b);
	}
}
class Mul extends superClass{
	@Override
	public void calculate() {
		System.out.println(a*b);
	}
}
class Div extends superClass{
	@Override
	public void calculate() {
		if(b==0) {
			System.out.println("0으로 나눌 수 없어요");
		}
		else {
			System.out.println(a/b);
		}
	}
}

public class p0411 {	
	public static void main(String[] args) {
		Scanner sc=new Scanner(System.in);
		System.out.print("두 정수와 연산자를 입력하시오>>");
		int a=sc.nextInt();
		int b=sc.nextInt();
		String op=sc.next();
		superClass sp;
		switch(op.charAt(0)) {
		case '+':
			sp=new Add();
			break;
		case '-':
			sp=new Sub();
			break;
		case '*':
			sp=new Mul();
			break;
		case '/':
			sp=new Div();
			break;
		default:
			return ;
		}
		sp.setValue(a, b);
		sp.calculate();
	}
}

[12번]

import java.util.Scanner;

class Seat{
	String seats[];
	public Seat() {
		seats=new String[10];
		for(int i=0;i<seats.length;i++) {
			seats[i]="---";
		}
	}
	public void show() {
		for(int i=0;i<seats.length;i++) {
			System.out.print(seats[i]+" ");
		}
		System.out.println();
	}
	public void set(String name,int num) {
		if(num>10) {
			System.out.println("10 미만의 수를 입력해주셔야합니다.");
		}
		else {
			seats[num-1]=name;
		}
		return;
	}
	public boolean check(String name) {
		for(int i=0;i<seats.length;i++) {
			if(seats[i].equals(name)) {
				seats[i]="---";
				return true;
			}
		}
		return false;
	}
}

class manage{
	Scanner sc;
	Seat arr[];
	String Grade[]= {"S","A","B"};
	public manage() {
		sc=new Scanner(System.in);
		arr=new Seat[3];
		for(int i=0;i<3;i++) {
			arr[i]=new Seat();
		}
	}
	
	public void reserve() {
		System.out.print("좌석구분 S(1), A(2), B(3)>>");
		int g=sc.nextInt();
		System.out.print(Grade[g-1]+">>");
		arr[g-1].show();
		
		System.out.print("이름>>");
		String name=sc.next();
		System.out.print("번호>>");
		int num=sc.nextInt();
		arr[g-1].set(name, num);
	}
	
	public void view() {
		for(int i=0;i<3;i++) {
			System.out.print(Grade[i]+">>");
			arr[i].show();
		}
		System.out.println("<<<조회를 완료하였습니다.>>>");
	}
	
	public void delete() {
		System.out.print("좌석구분 S(1), A(2), B(3)>>");
		int g=sc.nextInt();
		System.out.print(Grade[g-1]+">>");
		arr[g-1].show();
		System.out.print("이름>>");
		String name=sc.next();
		if(arr[g-1].check(name)) {
			System.out.println("<<<취소를 완료하였습니다>>>");
		}
		else {
			System.out.println("<<<존재하지 않는 이름입니다>>>");
		}
	}
	
	public void run() {
		int op;
		System.out.println("명품콘서트홀 예약 시스템입니다.");
		while(true) {
			System.out.print("예약:1, 조회:2, 취소:3, 끝내기:4>>");
			op=sc.nextInt();
			
			switch(op) {
			case 1:
				reserve();
				break;
			case 2:
				view();
				break;
			case 3:
				delete();
				break;
			case 4:
				return;
			default:
				System.out.println("숫자를 잘못입력했습니다.");
				break;
			}
		}
	}
}

public class p0412 {	
	public static void main(String[] args) {
		manage ms=new manage();
		ms.run();
	}
}

 

반응형