[출처] 자바의 정석 3판 연습문제 Chapter 6

 

 

[6-19] 다음 코드의 실행 결과를 예측하여 적으시오.

결과)

ABC123

After change:ABC123

 

풀이)

change(str)을 하게 되면 “ABC123456”이라는 새로운 문자열이 생성되고, 새로운 문자열의 주소를 참조변수 str에 저장된다.

하지만 change 메소드가 종료되고 change의 지역변수인 str는 사라지게 된다.

(그리고 어차피 매개변수 strmain 메소드 안의 str은 전혀 상관없는 참조변수이다)

 

다시 메인메소드로 돌아와서 str을 출력하면 처음의 값과 같은 “ABC123”이 출력된다.

 

 

 

 

[6-22] 다음과 같이 정의된 메서드를 작성하고 테스트하시오.

메서드명 : isNumber

기 능 : 주어진 문자열이 모두 숫자로만 이루어져있는지 확인한다.

모두 숫자로만 이루어져 있으면 true를 반환하고

그렇지 않으면 false를 반환한다.

만일 주어진 문자열이 null 이거나 빈문자열 “” 이라면 false를 반환한다

반환타입 : boolean

매개변수 : String str - 검사할 문자열

[Hint] String 클래스의 charAt(int i)메서드를 사용하면 문자열의 i 번째 위치한 문자를 얻을 수 있다.

 

정답)

public class Practice {
	static boolean isNumber(String str) {
		if (str == null || str.equals("")) return false;
		
		for(int i=0; i<str.length(); i++) {
			char ch = str.charAt(i);
			if (!('0'<= ch && ch <='9')) {
				return false;
			} 
		} return true;
	}

	public static void main(String[] args) {
		String str = "123";
		System.out.println(str+"는 숫자입니까? "+isNumber(str)); 
		str = "1234o";
		System.out.println(str+"는 숫자입니까? ? "+isNumber(str)); 

    }
}
 

풀이) 일단 매개변수의 유효성 검사를 한다.

null이 들어오거나 빈문자열이 들어오면 false를 반환한다.

반복문을 이용해 문자열을 한 문자씩 읽어와서 char타입 ch에 저장한다.

ch가 숫자가 아니면 즉시 false를 반환하고 전부 숫자이면 true를 반환하게 한다.

 

[출처] 자바의 정석 3판 연습문제 Chapter 6

 

+ Recent posts