Java/문제풀이

Java 문제 풀이 2

pakms980319 2024. 3. 7. 11:11

문제에서 요구하는 요소는

  1. 여러 생성자 메서드를 다룰수 있는가?
  2. 가변인자에 대해 이해하고 있는가?
  3. String 메서드 split(), contains()를 실습에서 사용할 수 있는가?
  4. getter, setter를 직접 만들 수 있는가?
  5. equals() 메서드를 직접 만들어 볼 수 있는가?
  6. toString() 메서드를 재정의 할 수 있는가?

 

package Ch06_Ex;


import java.util.Objects;


class Profile{
     //속성
    String name;
    String addr;
    String job;
    String major;
    //생성자
    //1)디폴트생성자 삽입
    //2)모든 인자 받는 생성자 삽입 -> 각멤버에 대입
    //3)모든 인자 받는 생성자 삽입(가변인자사용할것) -> , 를기준으로 잘라내어 각속성에 저장
    //ex, "홍길동,대구,프로그래머,컴퓨터공학" ->[홍길동,대구,프로그래머,컴퓨터공학]

    // 1) default constructor
    public Profile() {
        super();
    }

    // 2) AllArgsConstructor
    public Profile(String name, String addr, String job, String major) {
        super();
        this.name = name;
        this.addr = addr;
        this.job = job;
        this.major = major;
    }

    // 3) 가변인자 Constructor
    public Profile(String ...args) {
        String[] subargs = args[0].split(",");

        name = subargs[0];
        addr = subargs[1];
        job = subargs[2];
        major = subargs[3];
    }



    //기능
    //1) getter and setter 삽입
    //2) toString 재정의
    //3) boolean isContain(String compare) 함수 완성하기

    // 1) getter and setter
    public String getName() {
        return name;
    }


    public void setName(String name) {
        this.name = name;
    }


    public String getAddr() {
        return addr;
    }


    public void setAddr(String addr) {
        this.addr = addr;
    }


    public String getJob() {
        return job;
    }


    public void setJob(String job) {
        this.job = job;
    }


    public String getMajor() {
        return major;
    }


    public void setMajor(String major) {
        this.major = major;
    }

    // 2) toString 재정의
    @Override
    public String toString() {
        return "Profile [name=" + name + ", addr=" + addr + ", job=" + job + ", major=" + major + "]";
    }

    // 3) 밑의 함수 완성하기
    boolean isContain(String findstr) {
        //findstr의 문자열이 각멤버인 name,addr,job,major 중 하나라도 포함되어 있으면 true 리턴
        //아니면 false 리턴
        String allStr = name + addr + job + major;
   
        return allStr.contains(findstr);
    }


    // 4)
    public boolean equals(String str) {
        //all로 받은 문자열을 , 단위로 잘라내어(split(",")) 각각 나눠진 문자열이
        //name,addr,job,major 와 일치 하면 true
        //아니면 false 를 리턴
       
        String[] subStr = str.split(",");
       
        return Objects.equals(name, subStr[0]) && Objects.equals(addr, subStr[1]) && Objects.equals(job, subStr[2])
            && Objects.equals(major, subStr[3]);
    }
}




public class Test {

    public static void main(String[] args) {
        Profile hong = new Profile("홍길동,대구,프로그래머,컴퓨터공학");
        System.out.println(hong.toString());
        System.out.println("길동 포함여부 : " + hong.isContain("길동")); //true
        System.out.println("컴퓨터 포함여부 : " + hong.isContain("컴퓨터")); //true
        System.out.println("프로필 일치여부 : " + hong.equals("홍길동,대구,프로그래머,컴퓨터공학"));//false
        System.out.println("프로필 일치여부 : " + hong.equals("홍길동,울산,프로그래머,컴퓨터공학"));//false
       
    }
}

 

'Java > 문제풀이' 카테고리의 다른 글

Java 문제 풀이 Class  (0) 2024.03.12
Java Up/Down Casting 문제 1  (0) 2024.03.11
Java 상속 문제풀이 1  (0) 2024.03.08
Java 문제 풀이 1  (0) 2024.03.06
0. 변수 문제풀이  (0) 2024.02.28