반응형
1. 아래의 실행결과와 같이 출력하는 다음 main()을 가진 Song 클래스를 작성하라. Song 클래스는 노래 제목 title 필드, 생성자, getTitle() 메소드로 구성된다.
public static void main(String[] args) {
Song mySong = new Song("Let it go");
Song yourSong = new Song("강남스타일");
System.out.println("내 노래는 " + mySong.getTitle());
System.out.println("너 노래는 " + yourSong.getTitle());
}
public class Song {
private String title;
public Song(String title){
this.title = title;
}
private String getTitle() {
return title;
}
public static void main(String[] args) {
Song mySong = new Song("Let it go");
Song yourSong = new Song("강남스타일");
System.out.println("내 노래는 " + mySong.getTitle());
System.out.println("너 노래는 " + yourSong.getTitle());
}
}
2. 다음은 이름(name 필드)과 전화번호(tel 필드)를 가진 Phone 클래스이다. 이름과 전화번호를 입력받아 2개의 Phone 객체를 생성하고, 출력하는 main() 메소드를 작성하라.
public class Phone {
private String name;
private String tel;
public Phone(String name, String tel){
this.name = name;
this.tel = tel;
}
public String getName() {return name;}
public String getTel() {return tel;}
}
package chapter4;
import java.util.Scanner;
public class Phone {
private String name;
private String tel;
public Phone(String name, String tel){
this.name = name;
this.tel = tel;
}
public String getName() {return name;}
public String getTel() {return tel;}
public static void main(String[] args){
Scanner scanner = new Scanner(System.in);
System.out.print("이름과 전화번호 입력>>");
Phone phone1 = new Phone(scanner.next(), scanner.next());
System.out.print("이름과 전화번호 입력>>");
Phone phone2 = new Phone(scanner.next(),scanner.next());
System.out.println(phone1.getName() + "의 번호 " + phone1.getTel());
System.out.println(phone2.getName() + "의 번호 " + phone2.getTel());
scanner.close();
}
}
3. 사각형을 표현하는 다음 Rect 클래스를 활용하여, Rect 객체 배열을 생성하고, 사용자로부터 4개의 사각형을 입력받아 배열에 저장한 뒤, 배열을 검색하여 사각형 면적의 합을 출력하는 main() 메소드를 가진 Rect Array 클래스를 작성하라.
class Rect {
private int width, height;
public Rect(int width, int height) { this.width = width; this.height = height; }
public int getArea() { return width*height; }
}
package chapter4;
import java.util.Scanner;
class Rect {
private int width, height;
public Rect(int width, int height) { this.width = width; this.height = height; }
public int getArea() { return width*height; }
}
public class RectArray {
public static void main(String [] args) {
Scanner scanner = new Scanner(System.in);
Rect [] r = new Rect[4]; //
for(int i=0; i<r.length; i++) {
System.out.print(i+1);
System.out.print(" 너비와 높이 >>");
int width = scanner.nextInt();
int height = scanner.nextInt();
r[i] = new Rect(width, height);
}
System.out.println("저장하였습니다...");
int sum = 0;
for(int i=0; i<r.length; i++)
sum += r[i].getArea();
System.out.println("사각형의 전체 합은 " + sum);
}
}
4. 이름과 전화번호 필드, 생성자 및 필요한 메소드를 가진 Phone 클래스를 작성하고, 다음 실행 사례와 같이 작동하도록 main()을 가진 PhoneManager 클래스를 작성하라. 한 사람의 전화번호는 하나의 Phone 객체로 다룬다.
package chapter4;
import java.util.Scanner;
class Phone {
String name;
String tel;
public Phone(String name, String tel) {
this.name = name;
this.tel = tel;
}
public String getName() {return name;}
public String getTel() {return tel;}
}
public class PhoneManager {
@SuppressWarnings("unused")
public static void main(String[] args) {
System.out.print("인원수 >> ");
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
Phone[] phone = new Phone[n];
for (int i = 0; i < n; i++) {
System.out.print("이름과 전화번호(번호는 연속적으로 입력) >> ");
phone[i] = new Phone(scanner.next(), scanner.next());
}
System.out.println("저장되었습니다");
while (true) {
System.out.print("검색할 이름 >> ");
String string = scanner.next();
if (string.equals("exit"))
break;
for (int i = 0; i < n; i++) {
if (string.equals(phone[i].name)) {
System.out.println(string + "의 번호는 " + phone[i].tel + "입니다.");
break;
}
if(i==n-1)
System.out.println(string + "이 없습니다. ");
}
}
scanner.close();
}
}
5. CircleManager는 static 메소드를 가진 클래스이다. StaticTest 클래스는 static 메소드를 활용하는 사례를 보여준다. 실행 결과를 참고하여 코드를 완성하라.
package chapter4;
class Circle {
private int radius;
public Circle(int radius) { this.radius = radius; }
public int getRadius() { return this.radius; }
public void setRadius(int radius) { this.radius = radius; }
}
class CircleManager {
static void copy(Circle src, Circle dest) {
dest.setRadius(src.getRadius());
}
static boolean equals(Circle a, Circle b) {
if (a.getRadius() == b.getRadius())
return true;
else
return false;
}
}
public class StaticTest {
public static void main(String[] args) {
Circle pizza = new Circle(5);
Circle waffle = new Circle(1);
boolean res = CircleManager.equals(pizza, waffle);
if (res == true)
System.out.println("pizza와 waffle 크기 같음");
else
System.out.println("pizza와 waffle 크기 다름");
CircleManager.copy(pizza, waffle);
res = CircleManager.equals(pizza, waffle);
if (res == true)
System.out.println("pizza와 waffle 크기 같음");
else
System.out.println("pizza와 waffle 크기 다름");
}
}
6. 다음은 가로 세로로 구성되는 박스를 표현하는 Box 클래스와 이를 이용하는 코드이다. Box의 draw()는 fill 필드에 지정된 문자로 자신을 그린다. 실행 결과를 보면서 코드를 완성하라.
package chapter4;
public class Box {
private int width, height;
private char fillChar;
public Box(){
this(10,1);
}
public Box(int width, int height){
this.width = width;
this.height = height;
}
public void draw(){
for(int i=0;i<height;i++){
for(int j=0;j<width;j++)
System.out.print(fillChar);
System.out.println();
}
}
public void fill(char c){
this.fillChar = c;
}
public static void main(String[] args){
Box a = new Box();
Box b = new Box(20,3);
a.fill('*');
b.fill('%');
a.draw();
b.draw();
}
}
반응형
'자바 > 명품 자바 에센셜' 카테고리의 다른 글
명품 자바 에센셜 실습문제 6장 (2) | 2016.01.21 |
---|---|
명품 자바 에센셜 실습문제 5장 (0) | 2016.01.21 |
명품 자바에센셜 실습문제 3장 (10) | 2016.01.18 |
명품 자바 에센셜 실습문제 2장 (1) | 2016.01.05 |
명품 자바 에센셜 실습문제 1장 (0) | 2015.12.23 |