컴퓨터활용/자바

java 문자열 처리

멜번초이 2012. 4. 26. 08:28

C에서는 strcpy 를 쓰면 간단히 해결될 일을 java 에서는 아주 어렵게 해결한다. 아직 자바가 익숙하지 않아서 인가?

일단 String 은 char 의 배열이 아니라 객체 이므로 C 에서 처리 한글자를 지정해서 바꿀 수 없다. toCharArray() 메소드를 통해서 char[]로 변환한 다음에라야  C에서처럼 한글자를 바꾸거나 할 수 있다. 


아래 로직은  매번 째 숫자에 정해진 가중치를 곱한 후 누적 합한 다음에 10으로 나눈 나머지를 구하여 체크디지트를 한자리 만드는 로직이다.

 

class test {

       

  public static void main(String args[]) {

 

          String ticket1 = "123456789012";

          String ticket2 = "           ";

         

          int i, sum, remainder, checksum;

         

          int weight[] = {1,3,1,3,1,3,1,3,1,3,1,3};

          char[] tkt   = ticket2.toCharArray();


       
 
for( sum =0, i=0;i<
ticket2.length() ;i++) {

                 sum      +=  (ticket1.charAt(i)-48) * weight[i];

                 tkt[i] = ticket1.charAt(i);

          }

         

          remainder = sum % 10;

 

          if( remainder == 0 ) {

                 checksum =  0;

          }

          else {

                 checksum =  10 - remainder;

          }

 

          ticket2 = new String(tkt).trim()  +  "" + checksum;

         

          System.out.println("ticket="+new String(tkt)+ " sum="+sum+" checksum ="+checksum );

          System.out.println("ticket2="+ticket2);

  }

}