3장 연습문제

1. 아래 표의 내용을 2차원 배열에 저장하고 출력하는 프로그램을 작성하여라.

1반	홍길동	김철수	한영희	최관우	이진주
2반	박정수	양준식	안선영	백정원	유승환

>>

class  EXAM_3_1{

public static void main(String args[]){

String name[][] = new String[2][5];

name[0][0] = "홍길동" ;

name[0][1] = "김철수" ;

name[0][2] = "한영희" ;

name[0][3] = "최관우" ;

name[0][4] = "이진주" ;

name[1][0] = "박정수" ;

name[1][1] = "양준식" ;

name[1][2] = "안선영" ;

name[1][3] = "백정원" ;

name[1][4] = "유승환" ;

System.out.print("1반 : " );

for(int i=0; i<5; i++)

System.out.print(name[0][i] + "  ");

System.out.println();

System.out.print("2반 : " );

for(int i=0; i<5; i++)

System.out.print(name[1][i] + "  ");

}

}

2. 다음의 내용을 저장하고 출력하는 클래스를 작성하여라.

이름	홍길동	김철수	한영희	최관우	이진주
평균점수	96	80	81	77	93

>>

class  EXAM_3_2{

String name;

int ave;

EXAM_3_2(String name, int ave){

this.name = name;

this.ave = ave;

}

public void printInfo(){

System.out.println(this.name + this.ave);

}

}

class  EXAM_3_2_1{

public static void main(String args[]){

EXAM_3_2 data1 = new EXAM_3_2("홍길동", 96);

EXAM_3_2 data2 = new EXAM_3_2("김철수", 80);

EXAM_3_2 data3 = new EXAM_3_2("한영희", 81);

EXAM_3_2 data4 = new EXAM_3_2("최관우", 77);

EXAM_3_2 data5 = new EXAM_3_2("이진주", 93);

data1.printInfo();   data2.printInfo();

data3.printInfo();   data4.printInfo();

data5.printInfo();

}

}

3. for 반복문을 사용하여 아래와 같은 형태를 출력하는 프로그램을 작성하여라.

class  EXAM_2{

public static void main(String srgs[]){

for(int i=1; i<=5; i++){

for(int x=1; x<=5-i; x++)

System.out.print(' ');

for(int j=1; j<=i; j++)

System.out.print('*');

for(int x=1; x<=i-1; x++)

System.out.print('*');

System.out.println();

}

}

}

4. [예제 3-3]의 PointXY 클래스 타입의 변수를 사용하여 아래와 같이 실행하려고 한다.

main 메소드가 있는 PointXY_main 클래스를 작성하시오.

실행1) x=100, y=100인 PointXY 클래스 타입의 변수를 선언하여 생성하시오.

실행2) setX 메소드를 사용하여 x의 값을 200으로 변경하시오.

실행3) setY 메소드를 사용하여 y의 값을 300으로 변경하시오.

실행4) moveXY 메소드를 사용하여 x와 y의 값을 50만큼 증가시키시오.

class  PointXY_main{

public static void main(String srgs[]){

PointXY p1 = new PointXY(100, 100);

System.out.println("x:" + p1.x + ", y:" + p1.y);

p1.setX(200);

System.out.println("x:" + p1.x + ", y:" + p1.y);

p1.setY(300);

System.out.println("x:" + p1.x + ", y:" + p1.y);

p1.moveXY(50, 50);

System.out.println("x:" + p1.x + ", y:" + p1.y);

}

}

5. [예제 3-4]의 인터페이스 타입 Shape와 [예제 3-5]의 Rectangle 타입 변수와 Triangle 타입 변수를 사용하여 아래와 같이 실행하려고 한다. main 메소드가 있는 Shape_main 클래스를 작성하여라.

실행1) x=30, y=15인 Triangle 클래스 타입의 변수 t1을 선언하여 생성하여라.

실행2) x=30, y=15인 Rectangle 클래스 타입의 변수 r1을 선언하여 생성하여라.

실행3) getArea 메소드를 사용하여 t1의 넓이를 구하여라.

실행4) getArea 메소드를 사용하여 r1의 넓이를 구하여라.

interface Shape{

void getArea();

}

class Triangle  implements Shape{

int x, y;

double area;

Triangle(int x, int y){

this.x = x;

this.y = y;

}

public void getArea(){

this.area = this.x * this.y * 0.5;

}

}

class Rectangle  implements Shape{

int x, y;

double area;

Rectangle(int x, int y){

this.x = x;

this.y = y;

}

public void getArea(){

this.area = this.x * this.y;

}

}

class Shape_main{

public static void main(String args[]){

Triangle t1 = new Triangle(30, 15);

t1.getArea();

System.out.println("삼각형의 넓이 = " + t1.area);

Rectangle r1 = new Rectangle(30, 15);

r1.getArea();

System.out.println("사각형의 넓이 = " + r1.area);

}

}