JOO's note

문자열이 숫자인지 판별 본문

Back-End/알고리즘

문자열이 숫자인지 판별

pli3452 2015. 1. 8. 14:38

[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
Comments