문제풀이/명품 자바 프로그래밍(개정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();
}
}
반응형