2.字符串加解密

2.字符串加解密

1、对输入的字符串进行加解密,并输出。

2、加密方法为:

当内容是英文字母时则用该英文字母的后一个字母替换,同时字母变换大小写,如字母a时则替换为B;字母Z时则替换为a;

当内容是数字时则把该数字加1,如0替换1,1替换2,9替换0;

其他字符不做变化。

3、解密方法为加密的逆过程。

本题含有多组样例输入。

示例

输入

abcdefg
BCDEFGH

输出

BCDEFGH
abcdefg

分析

1.首先键盘接收l两段字符串,可以用BufferedReader或者是Scanner

2.加密操作,即就是对每个字符进行+1操作,若是超出,则返回第一个位置,即9->0,z->a,Z->A

3.解密操作,即就是对每个字符进行-1操作,若是不够,则返回最后一个位置,即0->9,a->z,A->Z

代码实现

import java.util.Scanner;

public class Main1 {
	public static void main(String[] args) throws Exception {
		Scanner sc = new Scanner(System.in);
		while (sc.hasNext()) {
			String str1 = sc.next();
			String str2 = sc.next();
			char[] c1 = str1.toCharArray();
			char[] c2 = str2.toCharArray();
			System.out.println(addArray(c1));
			System.out.println(sArray(c2));
		}
	}

	public static char[] addArray(char[] c) {
		for (int i = 0; i < c.length; i++) {

			if (c[i] >= 'a' && c[i] <= 'z') {
				c[i] = (char) ('A' + ((c[i] - 'a' + 1) % 26));
			} else if (c[i] > 'A' && c[i] <= 'Z') {
				c[i] = (char) ('a' + ((c[i] - 'A' + 1) % 26));
			}

			if (c[i] >= '0' && c[i] <= '9') {
				if(c[i]!='9')
				c[i] = (char) ('0' + ((c[i] - '0')% 9 +1 ) );
				else
					c[i]=(char)'0';
			}
			else
				c[i]=c[i];
		}
		return c;
	}

	public static char[] sArray(char[] c) {
		for (int i = 0; i < c.length; i++) {

			if (c[i] >= 'a' && c[i] <= 'z') {
				c[i] = (char) ('A' + ((c[i] - 'a' - 1)));
			} else if (c[i] > 'A' && c[i] <= 'Z') {
				c[i] = (char) ('a' + ((c[i] - 'A' - 1)));
			}

			if (c[i] >= '0' && c[i] <= '9') {
				if(c[i]!='0')
				c[i] = (char) ('0' + (c[i] - '0' - 1));
				else
					c[i]=(char)'9';
			}
			else
				c[i]=c[i];
		}
		return c;
	}
}

猜你喜欢

转载自blog.csdn.net/qq_45874107/article/details/113642547
今日推荐