본문 바로가기

콩's EDUCATION/콩's JAVA_RUN

Java 문제 6

1. 
class OverridingTest {
    public static void main(String args[]){
        int i = 10;
        int j = 20;
        
        MySum ms1 = new MySum(i, j);
        MySum ms2 = new MySum(i, j);

        System.out.println(ms1);

        if(ms1.equals(ms2))
            System.out.println
("ms1과 ms2의 합계는 동일합니다.");
    }
}

class MySum {
    int first;
    int second;
    
    MySum (int first, int second){
        this.first = first;
        this.second = second;
    }

    /* 조건1 */


    /* 조건2 */


}


조건1: main 메소드에서 MySum 객체를 출력하면 
객체 생성시에 전달한 두 정수의 
덧셈 결과를 출력하도록 
toString 메소드를 오버라이딩합니다.

예) 
MySum ms1 = new MySum(i, j);
System.out.println(ms1);

호출시에 출력값은 i와 j의 산술 연산 덧셈 결과입니다.
(참고 : String.valueOf 메소드는 int를 String으로 변경합니다)

조건2: main 메소드에서 MySum 클래스의 
equals 메소드 호출시 
전달하는 매개변수가 MySum 객체를 참조하고
 현재 객체의 toString 메소드와 
 전달 객체의 toString 메소드 
 내용이 동일하면 true를 리턴하고 
나머지 경우에는 false 를 리턴하도록 
equals 메소드를 오버라이딩합니다.

예) 
MySum ms1 = new MySum(i, j);
MySum ms2 = new MySum(j, i);
String s1 = new String("30");
ms1.equals(ms2) 호출 결과는 true입니다.
ms1.equals(s1) 호출 결과는 false입니다.





<출력결과>

30
30
ms1과 ms2의 합계는 동일합니다.
ms1과 s1의 값은 동일하지 않습니다.


2. S==> tring.replace('a', 'b')
문자열내의 특정 문자를 지정한 문자로 
수정하는 myReplace 메서드를 완성하시오.
 
myReplace 메서드의 
첫번째 매개변수는 수정대상이 되는 문자열이며 
두번째 매개변수는 문자열내에 존재하는 
문자이며 
세번째 매개변수는 변경하고자 하는 문자입니다.

myReplace 메서드는 변경한 문자열을 
리턴하며 
만약 문자열내에 변경대상이 되는 문자가 
없을 경우 
변경 없이 그대로 리턴해야 합니다.

<<수행결과>>
-------------Sample 1 --------------
he**o wor*d
-------------Sample 2 --------------
hello-world
-------------Sample 3 --------------
hello world

 	
<<참고 및 주의사항>>
- main 메서드는 스스로 작성하세요
- 주어진 메소드의 signature는 변경하지 않습니다.

public class Converter {
	public static void main(String[] args) {
		System.out.println("문자열에 특정문자 변경하는 테스");
		System.out.println("-------------Sample 1 --------------");
		String str1=myReplace("hello world",'l','*');
		System.out.println(str1);
		
		System.out.println("-------------Sample 2 --------------");
		String str2=myReplace("hello world",' ','-');
		System.out.println(str2);
		
		System.out.println("-------------Sample 3 --------------");
		String str3=myReplace("hello world",'a','*');
		System.out.println(str3);
		

	}
	
	public static String myReplace
	(String str, char oldChar, char newChar){
	// 이 부분을 구현하시오.

		
			 
	}
}


3. ==> 
String==>.StringBuffer(",,,,,,", 16);
StringBuffer.reverse()
String.split(",")
         Strng[] s:
String copy = ....
for(int i =s.length-1; i >= 0; i--){
 copy[]
 s[i]

} 
임의의 문자열(String str)과 
구분자(char separator)를 입력 받아 
str에 포함된 구분자를 기준으로 
str을 문자열 배열로 만들어 
역순으로 반환하는 기능의 split() 메소드를 
작성하세요.

<<수행결과>>
배열 크기 : 6
키트리교육장 10층 신원빌딩 역삼동 강남구 서울시

<<참고 및 주의사항>>
- main 메소드의 내용은 채점하지 않으므로 
테스트 목적으로 수정할 수 있습니다.
- 주어진 메소드의 signature는 변경하지 않습니다.


public class Spliting{
	public static void main(String[] args) {
		Spliting p = new Spliting();
		String addr = 
		"서울시,강남구,역삼동,신원빌딩,10층,키트리교육장";
		String[] addrArr = p.split(addr, ',');
		System.out.println("배열 크기 : " + addrArr.length);
		for(int i=0; i<addrArr.length; i++){
			System.out.print(addrArr[i] + " ");
		}		
	}

	public String[] split
	(String str, char separator){
		
		
	}
}

 

================================================================================================================

class MySum {
 int first;
 int second;

 public MySum(int first, int second) {
  super();
  this.first = first;
  this.second = second;
 }

 @Override
 public boolean equals(Object obj) {
  if (obj instanceof MySum) {
   int result = first + second;
   int result2 = ((MySum) obj).first + ((MySum) obj).second;
   return result == result2;
  } else {
   return false;
  }
 }

 @Override
 public String toString() {
  return String.valueOf(first + second);
 }
}

public class OverridingTest {
 public static void main(String[] args) {
  int i = 10;
  int j = 20;

  MySum ms1 = new MySum(i, j);
  MySum ms2 = new MySum(i, j);

  System.out.println(ms1);
  if (ms1.equals(ms2)) {
   System.out.println("ms1과 ms2의 합계는 동일합니다.");
  }
 }
}

================================================================================================================

public class Converter {
 public static void main(String[] args) {
  System.out.println("문자열에 특정문자 변경하는 테스");
  System.out.println("-------------Sample 1 --------------");
  String str1=myReplace("hello world",'l','*');
  System.out.println(str1);
  
  System.out.println("-------------Sample 2 --------------");
  String str2=myReplace("hello world",' ','-');
  System.out.println(str2);
  
  System.out.println("-------------Sample 3 --------------");
  String str3=myReplace("hello world",'a','*');
  System.out.println(str3);
  

 }
 
 public static String myReplace(String str, char oldChar, char newChar){
  str = str.replace(oldChar,newChar);  
  return str;
 }
}


================================================================================================================
import java.util.Arrays;
import java.util.Collections;
import java.util.List;

public class Spliting{
 public static void main(String[] args) {
  Spliting p = new Spliting();
  String addr ="서울시,강남구,역삼동,신원빌딩,10층,키트리교육장";
  String[] addrArr = p.split(addr,','); //문자열 나누기
  System.out.println("배열 크기 : " + addrArr.length);
  for(int i=0; i<addrArr.length; i++){
   System.out.print(addrArr[i] + " ");
  }  
 }

 public String[] split(String str, char separator)
 {
  String[] splitStr;
  splitStr = str.split(String.valueOf(separator));//split매개변수가 문자열이어서 형변환
  List<String> list = Arrays.asList(splitStr); //배열을 리스트화
  Collections.reverse(list);      //리스트화된 배열의 내용을 역순으로 뒤집는다.
  return splitStr;  
 }
}