JOO's note
문자열이 숫자인지 판별 본문
[4-13] 다음은 주어진 문자열(value)이 숫자인지를 판별하는 프로그램이다. (1)에 알맞
은 코드를 넣어서 프로그램을 완성하시오.
[연습문제]/ch4/Exercise4_13.java
class Exercise4_13
{
public static void main(String[] args)
{
String value = "12o34";
char ch = ' ';
boolean isNumber = true;
// 반복문과 charAt(int i)를 이용해서 문자열의 문자를
// 하나씩 읽어서 검사한다.
for(int i=0; i < value.length() ;i++) {
// (1) 로직작성
}
}
if (isNumber) {
System.out.println(value+"는 숫자입니다.");
} else {
System.out.println(value+"는 숫자가 아닙니다.");
}
} // end of main
} // end of class
[정답]
ch = value.charAt(i);
if(!('0'<=ch && ch<='9')) {
isNumber = false;
break;
}
[해설] charAt(int i)메서드는 문자열에서 i번째 문자를 반환한다.(i의 값은 0부터 시작
한다.) "12o34"라는 문자열이 있을 때 "12o34".charAt(2)는 문자 'o'가 된다.
index 0 1 2 3 4
char 1 2 o 3 4
조건식 '0'<=ch && ch<='9'는 문자 ch가 숫자('0'~'9'사이의 문자)이면 참(true)이 된다.
이 조건식 전체에 논리부정 연산자 ‘!’를 붙였으니, 문자 ch가 숫자가 아니어야 참(true)인
조건식이 된다. 이 조건식을 만족하는 경우(문자열 중의 어느 한 문자라도 숫자가 아닌
경우)에만 isNumber의 값을 false로 바꾸고 break문을 수행해서 반복문을 빠져나온다.
[실행결과]
12o34는 숫자가 아닙니다.
[char의 문자코드값 이용]
public class Exam4_13
{
public static void main(String[] args)
{
String value="12o34";
char ch=' ';
boolean isNumber=true;
int a='0'; //48
int b='1'; //49
int c='9'; //57
// System.out.println(a + "," + b + "," + c);
for(int i=0; i<value.length() ;i++){
//System.out.println(value.charAt(i));
int result=value.charAt(i);
if(result<48 || result>57){
isNumber=false;
break;
}
}
if(isNumber){
System.out.println(value+" 는 숫자입니다.");
}else{
System.out.println(value+" 는 숫자가 아닙니다.");
}
}
}
'Back-End > 알고리즘' 카테고리의 다른 글
2차원배열 (0) | 2015.01.08 |
---|---|
회문수(palindrome) (0) | 2015.01.08 |
피보나치수열 (0) | 2015.01.08 |
문자열이 아닌 숫자에서 각자리의 숫자 뽑아오기 (0) | 2015.01.08 |
charAt(i)와 char의 문자코드값 (0) | 2015.01.08 |