한글로 표기한 숫자를 정수로 변환 하여 출력하는 Java소스코드
은행, 금융기관 등과 같이 돈의 금액이 중요한 곳에서는 금액을 표기 할 때 숫자 외 한글로 금액을 표기하기도 한다.
이렇게 한글로 숫자를 표기한 것을 다시 숫자로 변환해 주는 Java Class 코드이다.
이백칠심오만이천칠백 이렇게 한글로 표현된 숫자를 2752700 이렇게 숫자로 변환한다.
예제 코드
import java.util.*;
public class HangulToNum {
public static void main(String[] args) {
String input = "이천오백삼십만사천오백육십칠";
System.out.println(input);
System.out.println(hangulToNum(input));
}
public static long hangulToNum(String input) {
long result = 0;
long tmpResult = 0;
long num = 0;
final String NUMBER = "영일이삼사오육칠팔구";
final String UNIT = "십백천만억조";
final long[] UNIT_NUM = { 10, 100, 1000, 10000, (long)Math.pow(10,8), (long)Math.pow(10,12) };
StringTokenizer st = new StringTokenizer(input, UNIT, true);
while(st.hasMoreTokens()) {
String token = st.nextToken();
//숫자인지, 단위(UNIT)인지 확인
int check = NUMBER.indexOf(token);
if(check == -1) { //단위인 경우
if("만억조".indexOf(token) == -1) {
tmpResult += (num != 0 ? num : 1) * UNIT_NUM[UNIT.indexOf(token)];
} else {
tmpResult += num;
result += (tmpResult != 0 ? tmpResult : 1) * UNIT_NUM[UNIT.indexOf(token)];
tmpResult = 0;
}
num = 0;
} else { //숫자인 경우
num = check;
}
}
return result + tmpResult + num;
}
}
/* 결과
* 이천오백삼십만사천오백육십칠
* 25304567
*/ 이 저작물은 크리에이티브 커먼즈 저작자표시-비영리-동일조건변경허락 4.0 국제 라이선스 에 따라 이용할 수 있습니다.
Comments
Related Posts
콘솔에서 즐기는 간단한 가위 바위 보 게임
콘솔 창을 이용해서 간단하게 즐길 수 있는 가위/바위/보 게임 Java Class 코드입니다. 의 를 이용해서 콘솔 창에서 가위/바위/보에 대한 숫자 입력을 받으면 컴퓨터가 랜…
그누보드4 아이디 변경 함수 - 모든 테이블의 아이디를 변경
그누보드 사용시 아이디값을 이메일등으로 사용하거나 아이디를 변경하게 하도록 하는 사이트들이 존재 한다. 그누보드에서는 아이디 값이 게시판테이블에서나 포인트등 에서 회원을 구분하…