본문 바로가기

프로그래밍/자바(JAVA)

[자바/JAVA] 자바 한글형태의 숫자를 숫자로 바꾸기

자바 한글형태의 숫자를 숫자로 바꾸기

import java.io.*;
import java.util.*;

class Num
{
 public static void main(String[] args)throws IOException
 {
  InputGender in = new InputGender();
  in.input();
  in.gender();
 }
}

class InputGender
{
 public String get_num="";
 void input()throws IOException
 {
  
  BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
  System.out.println("한글 숫자 입력> ");
  get_num = in.readLine();
  
 }

 void gender()throws IOException
 {
  String num[] = {"영","일","이","삼","사","오","육","칠","팔","구"};
  String small_unit[]= {"십","백","천"};
  String big_unit[]={"만","억"};
  String all_unit="십백천만억";
  long r_result=0;
  long result = 0;
  
  StringTokenizer stn = new StringTokenizer(get_num,all_unit,true);
  long imsi = 0; 
  
  while(stn.hasMoreTokens())
  {
   String temp = stn.nextToken();
   for (int i = 0; i< num.length ;i++ )
   {
    if(num[i].equals(temp))
    {
     imsi = i;
     break;
    }
   }
   
   for (int j = 0; j< small_unit.length ; j++ )
   {
    if(small_unit[j].equals(temp))
    {
     result +=imsi*Math.pow(10,j+1);
     imsi = 0;
     break;
    }
   }
   
   for ( int k = 0; k< big_unit.length ;k++ )
   {
    if(big_unit[k].equals(temp))
    {
     r_result+=(result+imsi)*Math.pow(10000,k+1);//십의짜리 계산후 일의자리숫자 합치고 10000만큼 거듭제곱근 시키기.
     result= 0;//초기화
     imsi = 0;//초기화
     break;
    }
   }
  }
  result+=imsi;//최종 1의자리값을 합하고.
  r_result +=result;//나머지값에 합산한다.
  System.out.print("입력하신 숫자는 :" + (r_result));
 }
}