19: JAVA Overriding equals

jk·2024년 1월 25일
0

kdt 풀스택

목록 보기
35/127



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("다른 점");			
}
/*
=====================
Point(3,50)
다른점
*/
//
//code
//
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;
    }
}
/*print
Point(3,50)
다른 점
*/



2.중심을 나타내는 정수 x, y와 반지름 radius 필드를 가지는 Circle 클래스를 작성하고자 한다. 생성자는 3개의 인자(x, y, raidus)를 받아 해당 필드를 초기화하고, equals() 메소드는 두 개의 Circle 객체의 중심이 같으면 같은 것으로 판별하도록 한다.

public static void main(String[] args) {
	Circle a = new Circle(2, 3, 5); // 중심 (2, 3)에 반지름 5인 원
	Circle b = new Circle(2, 3, 30); // 중심 (2, 3)에 반지름 30인 원
	System.out.println("원 a : " + a);
	System.out.println("원 b : " + b);
	if(a.equals(b))
		System.out.println("같은 원");
	else 
		System.out.println("서로 다른 원");
}
/*=========================
원 a : Circle(2,3)반지름5
원 b : Circle(2,3)반지름30
같은 원
*/
//
//code
//
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;
    }
}
/*print
원 a : Circle(2,3)반지름5
원 b : Circle(2,3)반지름30
같은 원
*/



3.Scanner를 이용하여 한 라인을 읽고, 공백으로 분리된 어절이 몇 개 들어 있는지 "그만"을 입력할 때까지 반복하는 프로그램을 작성하라.

>>I love Java.
어절 개수는 3
>>자바는 객체 지향 언어로서 매우 좋은 언어이다.
어절 개수는 7
>>그만
종료합니다...
[Hint] Scanner.nextLine()을 이용하면 빈칸을 포함하여 한 번에 한 줄을 읽을 수 있다.
//
//code
//
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");
        //scanner = new Scanner(System.in);
        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();
    }
}
/*print
I love Java.
어절 개수는 3
자바는 객체 지향 언어로서 매우 좋은 언어이다.
어절 개수는 7
그만
종료합니다...
*/



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("다른 사람");
}
//
/*=============================
이름:Lee 나이:29
같은 사람
*/
//
//code
//
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;
    }
}
/*print
이름:Lee 나이:29
같은 사람
*/
profile
Brave but clumsy

0개의 댓글