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

    2020. 10. 12.

    by. Hyeon-Uk

    반응형

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

     

    반응형

    댓글