실제로 짜려고 보니 굉장히 어려웠다.. 복습..
import java.util.Scanner;
public class ex06 {
public static void main(String[] args) {
/*
* 다음은 알파벳과 숫자를 아래에 주어진 암호표로 암호화하는 프로그램이다. (1)에 알맞은 코드를 넣어서 완성하시오.
*
* a b c d e f g h i j k l m n o p q r s t u v w x y z ` ~ ! @ # $ % ^ & * ( ) -
* _ + = | [ ] { } ; : , . /
*
* 0 1 2 3 4 5 6 7 8 9 q w e r t y u i o p
*
* char[] abcCode = { '`','~','!','@','#','$','%','^','&','*',
* '(',')','-','_','+','=','|','[',']','{', '}',';',':',',','.','/'};
*
* // 0 1 2 3 4 5 6 7 8 9 char[] numCode =
* {'q','w','e','r','t','y','u','i','o','p'};
*
*
*/
// 암호화
/*
* 함수명 : security parameter: String return String 내용: 일반 문자와 숫자를 암호화하여 돌려주는 함수
*/
String src = "abc012";
String secCode = "";
secCode = security(src);
System.out.println("원본: " + src);
System.out.println("암호화: " + secCode);
String oriCode = "";
oriCode = deciphering(secCode);
System.out.println("복호화된 코드 : " + oriCode);
}
private static String security(String src) {
// TODO Auto-generated method stub
char[] abcCode = { '`', '~', '!', '@', '#', '$', '%', '^', '&', '*', '(', ')', '-', '_', '+', '=', '|', '[',
']', '{', '}', ';', ':', ',', '.', '/' };
// 0 1 2 3 4 5 6 7 8 9
char[] numCode = { 'q', 'w', 'e', 'r', 't', 'y', 'u', 'i', 'o', 'p' };
String resultCode = "";
// 문자
for (int i = 0; i < src.length(); i++) {
char ch = src.charAt(i);
int chNum = (int) ch;
if (chNum >= 97 && chNum <= 122) {
chNum = chNum - 97;
resultCode = resultCode + abcCode[chNum];
}
// 숫자일때
else {
chNum = chNum - 48;
resultCode = resultCode + numCode[chNum];
}
}
return resultCode;
}
private static String deciphering(String src) {
char[] abcCode = { '`', '~', '!', '@', '#', '$', '%', '^', '&', '*', '(', ')', '-', '_', '+', '=', '|', '[',
']', '{', '}', ';', ':', ',', '.', '/' };
// 0 1 2 3 4 5 6 7 8 9 c
char[] numCode = { 'q', 'w', 'e', 'r', 't', 'y', 'u', 'i', 'o', 'p' };
String originCode = "";
for (int i = 0; i < src.length(); i++) {
char c = src.charAt(i);
int chNum = (int) c;
// 알파벳 -> 숫자로 변환해야한다.
int index = 0;
if (chNum >= 97 && chNum <= 122) {
for (int j = 0; j < numCode.length; j++) {
if(chNum == (int)numCode[j]) {
index = j;
break;
}
}
index = index + 48;
originCode = originCode + (char)index;
} else {
for(int j = 0; j < abcCode.length; j ++) {
if(chNum == (int)abcCode[j]) {
index = j;
break;
}
}
index = index + 97;
originCode = originCode + (char)index;
}
}
return originCode;
}
}
아스키 코드표(출처: https://shaeod.tistory.com/228)
'Java > java 기초' 카테고리의 다른 글
베이스볼 게임 (메소드 분리) (0) | 2019.11.26 |
---|---|
오름차순, 내림차순(메소드) (0) | 2019.11.26 |
String 문자열속 숫자만 포함되었는지 검사 (문자열 검사, 숫자 검사) (0) | 2019.11.25 |
카드 위치 바꾸기 (메소드 화) (0) | 2019.11.25 |
두 점(x, y) (x1, y1) 간의 거리 구하기 (0) | 2019.11.25 |