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