본문 바로가기
JAVA

[JAVA] Caesar cipher Coding 하기

by 개폰지밥 2019. 4. 12.
반응형

아래의 소스코드는 몇 칸 평행이동을 할 것인지만, 즉 a를 수정하기만 하면 시저암호화되서 잘 나온다. 전의 재활용성에서는 좋아졌다. 그런데 소스코드가 너무 길다. 안 예뻐보인다는 단점이 있다. 즉 가독성이 안좋다.

어떻게 수정하면 더 예뻐보이는지 고민을 해야 할 것 같다.

 

- 현재 시저 암호화 소스코드(평행이동을 3칸 했을 때)

private static void test004() {
// 시저 암호 만들어보세요.
// 아스키 코드
// 대문자 소문자, 알파벳 갯수 26개

int a = 3; // 몇 칸 평행이동

String str = "encryptozZ";
for (int i = 0; i < str.length(); i++) {
char ch = str.charAt(i);
char chh = (char) (ch + a);
int chhh = (int) chh;
//대문자
if (65 <= chhh && chhh <= 90 + a) {

if (chhh > 90) {
int chhhh = chhh - 26;
System.out.print((char) chhhh);
} else {
System.out.print((char) chhh);
}
//소문자
} else if (97 <= chhh && chhh <= 122 + a) {
if (chhh > 122) {
int chhhh = chhh - 26;
System.out.print((char) chhhh);
} else {
System.out.print((char) chhh);
}
}
}
}

- 결과

hqfubswrcC

 

- 평행이동을 8칸했을 때

private static void test004() {
// 시저 암호 만들어보세요.
// 아스키 코드
// 대문자 소문자, 알파벳 갯수 26개

int a = 8;

String str = "aAbBxXzZ";
for (int i = 0; i < str.length(); i++) {
char ch = str.charAt(i);
char chh = (char) (ch + a);
int chhh = (int) chh;
if (65 <= chhh && chhh <= 90 + a) {
if (chhh > 90) {
int chhhh = chhh - 26;
System.out.print((char) chhhh);
} else {
System.out.print((char) chhh);
}
} else if (97 <= chhh && chhh <= 122 + a) {
if (chhh > 122) {
int chhhh = chhh - 26;
System.out.print((char) chhhh);
} else {
System.out.print((char) chhh);
}
}
}
}

- 결과

test04=============
iIjJfFhH

 

반응형

'JAVA' 카테고리의 다른 글

합이 6이 되는 경우의 수 출력  (0) 2019.05.03
Java Class & Object에 관해서  (0) 2019.04.16
20190401  (0) 2019.04.01
190329  (0) 2019.03.28
[JAVA] Scanner, 형변환, 연산자, if문  (0) 2019.03.28

댓글