[출처] 자바의 정석 3판 연습문제 Chapter 6
[6-19] 다음 코드의 실행 결과를 예측하여 적으시오.

결과)
ABC123
After change:ABC123
풀이)
change(str)을 하게 되면 “ABC123456”이라는 새로운 문자열이 생성되고, 새로운 문자열의 주소를 참조변수 str에 저장된다.
하지만 change 메소드가 종료되고 change의 지역변수인 str는 사라지게 된다.
(그리고 어차피 매개변수 str과 main 메소드 안의 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
'Java > Java의 정석 연습문제 오답노트' 카테고리의 다른 글
220326 Java - Chapter 8 연습문제 (0) | 2022.03.29 |
---|---|
220326 Java - Chapter 7 연습문제 (0) | 2022.03.26 |
220319 Java - Chapter 5 연습문제 (0) | 2022.03.19 |
220318 Java - Chapter 4 연습문제 (0) | 2022.03.19 |
220318 Java - Chapter 3 연습문제 (0) | 2022.03.18 |