一、题目链接
http://noi.openjudge.cn/ch0107/09/
二、解题思路
◎ 循环遍历给定字符串的每个字符:
→ 如果当前字符是z或者Z,用a或A替代;
否则如果当前字符是字母,用其后继字母替代;
◎ java.lang.Character.isLetter(char ch)方法:返回true当且仅当ch为字母字符,否则false。
三、实施步骤
◆ 方法public String encryption(String text)处理所有业务逻辑:
→ 参数text为String类型的对象,代表给定字符串;
→ 方法encryption返回String类型的对象,代表text的加密字符串。
◇ 方法encryption实施步骤如下:
◎ 首先,定义int类型的整数n,代表text及其加密字符串的长度,初始时n=text.length();
◎ 其次,定义char[] ans=text.toCharArray(),将text的内容转存进ans数组;
◎ 然后,通过标记i代表每个字符的位置,i从0开始,到n-1为止,更新步长为1,循环处理如下:
→ 如果ans[i] == 'z' || ans[i] == 'Z':令ans[i] = (char) (ans[i] - 25);
否则如果isLetter(ans[i]):令ans[i] = (char) (ans[i] + 1);
◎ 最后,返回String.valueOf(ans)。
◇ 在方法main中输入给定字符串,将其作为参数注入方法encryption,输出计算结果。
四、Java程序
import java.util.Scanner;
import static java.lang.Character.isLetter;
public class Main {
public String encryption(String text) {
int n = text.length();
char[] ans = text.toCharArray();
for (int i = 0; i < n; i++) {
if (ans[i] == 'z' || ans[i] == 'Z') {
ans[i] = (char) (ans[i] - 25);
}
else if (isLetter(ans[i])) {
ans[i] = (char) (ans[i] + 1);
}
}
return String.valueOf(ans);
}
public static void main(String[] args) {
Main test = new Main();
Scanner input = new Scanner(System.in);
String text = input.nextLine();
System.out.print(test.encryption(text));
}
}