题目要求:
将输入的大写字母转成对应小写的后5个,如A转换后为f;如果转换后大于z则从a重新计,即多出1就转成a,多出2就转成b以此类推。
Java代码:
```java
private static char exchange(char c) {
if (c > 'Z' || c < 'A') {
throw new RuntimeException("必须为26个大写字母中的一个");
}
int begin = 'a', end = 'z', cur = Character.toLowerCase(c);
cur = cur + 5;
if (cur > end) {
cur = cur - end - 1 + begin;
}
return (char) cur;
}
```
Java中char和int能够相互转换,他们转换的依据是依据ASCII编码。例如`‘A’= 65,'z'=122`,这之间的数字都代表字母。
那么,如果我们不用字母呢,不用ASCII里面的映射,用一个汉字试试:
```java
int i = '李';
System.out.println(i); //输入的结果:26446
```
那么这个数字是如何得到的呢?参看你的项目编码,我的项目编码是`utf-8`,那么我查询相应的对照表即可。