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);
}
}
'컴퓨터활용 > 자바' 카테고리의 다른 글
ORA-00604 나 ORA-01000 오류가 날 때 (2) | 2012.05.29 |
---|---|
JVM Garbage Collection 순간 포착 (0) | 2012.05.25 |
Transaction rolled back because it has been marked as rollback-only (0) | 2012.04.25 |
중복 로그인 방지 로직 (0) | 2012.04.22 |
비밀번호를 난수로 발생하는 로직 (개인정보보호 지침) (1) | 2012.03.29 |