题目描述
题目描述 1、对输入的字符串进行加解密,并输出。 2加密方法为: 当内容是英文字母时则用该英文字母的后一个字母替换,同时字母变换大小写,如字母a时则替换为B;字母Z时则替换为a; 当内容是数字时则把该数字加1,如0替换1,1替换2,9替换0; 其他字符不做变化。 3、解密方法为加密的逆过程。 接口描述: 实现接口,每个接口实现1个基本操作: void Encrypt (char aucPassword[], char aucResult[]):在该函数中实现字符串加密并输出 说明: 1、字符串以\0结尾。 2、字符串最长100个字符。 int unEncrypt (char result[], char password[]):在该函数中实现字符串解密并输出 说明: 1、字符串以\0结尾。 2、字符串最长100个字符。
输入描述:
输入说明 输入一串要加密的密码 输入一串加过密的密码
输出描述:
输出说明 输出加密后的字符 输出解密后的字符
输入例子:
abcdefg BCDEFGH
输出例子:
BCDEFGH abcdefg
方法一:
import java.util.Scanner;
/** * Created by Administrator on 2015/12/23.
*/
public class Main {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
while (sc.hasNext()){
String strA="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
String strB="bcdefghijklmnopqrstuvwxyzaBCDEFGHIJKLMNOPQRSTUVWXYZA1234567890";
String str1=sc.next();
String str2=sc.next();
StringBuffer sb1=new StringBuffer();
StringBuffer sb2=new StringBuffer();
for(int i=0;i<str1.length();i++){
sb1.append(strB.charAt(strA.indexOf(str1.charAt(i))));
}
for(int i=0;i<str2.length();i++){
sb2.append(strA.charAt(strB.indexOf(str2.charAt(i))));
}
System.out.println(sb1);
System.out.println(sb2);
}
}
}方法二:
import java.util.Scanner;
/** * Author: 王俊超
* Date: 2015/12/23 13:31
* All Rights Reserved !!!
*/
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// Scanner scanner = new Scanner(Main.class.getClassLoader().getResourceAsStream("data.txt")); while (scanner.hasNext()) {
String input = scanner.nextLine();
System.out.println(encrypt(input));
input = scanner.nextLine();
System.out.println(unencrypt(input));
}
scanner.close();
}
/**
* 字符串解密
*
* @param s
* @return
*/
private static String unencrypt(String s) {
char[][] mask = {
{\'z\', \'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\', \'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\'},
{\'9\', \'0\', \'1\', \'2\', \'3\', \'4\', \'5\', \'6\', \'7\', \'8\'}
};
return convert(s, mask);
}
/**
* 字符串加密
*
* @param s
* @return
*/
private static String encrypt(String s) {
char[][] mask = {
{\'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\', \'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\', \'A\'},
{\'1\', \'2\', \'3\', \'4\', \'5\', \'6\', \'7\', \'8\', \'9\', \'0\'}
};
return convert(s, mask);
}
/**
* 根据掩码表对字符串进行转换
*
* @param s
* @param mask
* @return
*/
private static String convert(String s, char[][] mask) {
StringBuilder builder = new StringBuilder(s.length());
for (int i = 0; i < s.length(); i++) {
char c = s.charAt(i);
if (c >= \'A\' && c <= \'Z\') {
builder.append(mask[0][c - \'A\']);
} else if (c >= \'a\' && c <= \'z\') {
builder.append(mask[1][c - \'a\']);
} else {
builder.append(mask[2][c - \'0\']);
}
}
return builder.toString();
}
}