一、问题描述
程序实现目标: 输入一个字符串,将其各个字符对应的ASCII值加5后,输出结果。
程序要求:该字符串只包含小写字母,若其值加5后的字符值大于'z',将其转换成从a开始的字符。
二、算法分析
两个问题: 1. 如何获得字符的ASCII值
2.如何将大于‘z的字符值转化为从a 开始。
第一个问题:
由于JVM支持char和int之间的隐转化,所以可以直接得到char的Ascii值
第二个问题:
利用int result = temp - 'z' + a
三、算法
public static char[] getResultArray(String inputStr) {
char[] charArray = inputStr.toCharArray();
for (int i = 0; i < charArray.length; i++) {
int temp = charArray[i] + 5;
if (temp > 'z') {
int newChar = temp - 'z' + 'a';
charArray[i] = (char) newChar;
} else {
charArray[i] = (char) temp;
}
}
return charArray;
}
测试方法
private static final String REGEX = "^[a-z]*$";
public static void main(String[] args) {
Scanner cin = new Scanner(System.in);
String inputStr = cin.nextLine();
if (inputStr.matches(REGEX)) {
System.out.println(getResultArray(inputStr));
} else {
// please input the correct string.
System.out.println("pleae check input string");
}
}
运行结果
thankyou
ymfspetz