1. 다음 main()이 실행되면 아래 예시와 같이 출력되도록 MyPoint 클래스를 작성하라.
public static void main(String [] args) {
MyPoint p = new MyPoint(3, 50);
MyPoint q = new MyPoint(4, 50);
System.out.println(p);
if(p.equals(q)) System.out.println("같은 점");
else System.out.println("다른 점");
}
class MyPoint {
private int posX;
private int posY;
MyPoint(int posX, int posY) {
this.posX = posX;
this.posY = posY;
}
@Override
public boolean equals(Object obj) {
boolean equal = false;
if (obj instanceof MyPoint) {
MyPoint myPoint = (MyPoint)obj;
equal = ((this.posX == myPoint.posX) && (this.posY == myPoint.posY));
};
return equal;
}
@Override
public String toString() {
String str = "Point(".concat(String.valueOf(this.posX)).concat(",")
.concat(String.valueOf(this.posY)).concat(")");
return str;
}
}
2.중심을 나타내는 정수 x, y와 반지름 radius 필드를 가지는 Circle 클래스를 작성하고자 한다. 생성자는 3개의 인자(x, y, raidus)를 받아 해당 필드를 초기화하고, equals() 메소드는 두 개의 Circle 객체의 중심이 같으면 같은 것으로 판별하도록 한다.
public static void main(String[] args) {
Circle a = new Circle(2, 3, 5);
Circle b = new Circle(2, 3, 30);
System.out.println("원 a : " + a);
System.out.println("원 b : " + b);
if(a.equals(b))
System.out.println("같은 원");
else
System.out.println("서로 다른 원");
}
class Circle {
private int x;
private int y;
private int radius;
Circle(int x, int y, int radius) {
this.x = x;
this.y = y;
this.radius = radius;
}
@Override
public boolean equals(Object obj) {
boolean equal = false;
if (obj instanceof Circle) {
Circle circle = (Circle)obj;
equal = ((this.x == circle.x) && (this.y == circle.y));
};
return equal;
}
@Override
public String toString() {
String str = "Circle(".concat(String.valueOf(this.x)).concat(",")
.concat(String.valueOf(this.y)).concat(")반지름"
.concat(String.valueOf(this.radius)));
return str;
}
}
3.Scanner를 이용하여 한 라인을 읽고, 공백으로 분리된 어절이 몇 개 들어 있는지 "그만"을 입력할 때까지 반복하는 프로그램을 작성하라.
>>I love Java.
어절 개수는 3
>>자바는 객체 지향 언어로서 매우 좋은 언어이다.
어절 개수는 7
>>그만
종료합니다...
[Hint] Scanner.nextLine()을 이용하면 빈칸을 포함하여 한 번에 한 줄을 읽을 수 있다.
import java.util.*;
class Const {
static final String DELIMITER = " ";
static final String STOP = "그만";
}
class Print {
private static StringBuilder print = new StringBuilder();
private static void printAndReset() {
System.out.print(print);
print.setLength(0);
}
private static void printlnAndReset() {
System.out.println(print);
print.setLength(0);
}
static void tokenCount(int count) {
print.append("어절 개수는 ");
print.append(count);
printlnAndReset();
}
static void exit() {
print.append("종료합니다...");
printlnAndReset();
}
}
class Functions {
private static Scanner scanner;
static void CountingTokensFromScanner() {
scanner = new Scanner(System.in, "Cp949");
while(true) {
String input = scanner.nextLine();
if(input.equals(Const.STOP)) {
Print.exit();
scanner.close();
return;
};
StringTokenizer stringTokenizer = new StringTokenizer(input, Const.DELIMITER);
int count = 0;
while(stringTokenizer.hasMoreTokens()) {
stringTokenizer.nextToken();
count++;
};
Print.tokenCount(count);
}
}
static void run() {
try {
CountingTokensFromScanner();
} catch(Exception e) {
e.printStackTrace();
run();
} finally {
};
}
}
class CountingTokensFromScannerMain {
public static void main(String[] args) {
Functions.run();
}
}
4. 아래와 같이 출력 되도로 하시오.
public static void main(String[] args) {
Person p1 = new Person('Lee',29)
Person p2 = new Person('Lee',29)
System.out.println(p1);
if(p1.equals(p2))
System.out.println("같은 사람");
else
System.out.println("다른 사람");
}
class Person extends Object {
private String name;
private int age;
Person(String name, int age) {
super();
this.name = name;
this.age = age;
}
@Override
public boolean equals(Object obj) {
boolean equal = false;
if(obj instanceof Person) {
Person person = (Person)obj;
equal = ((this.name == person.name) && (this.age == person.age));
};
return equal;
}
@Override
public String toString() {
String str = "이름:".concat(this.name).concat(" 나이:").concat(String.valueOf(this.age));
return str;
}
}