描述 现在有一种密码变换算法。 九键手机键盘上的数字与字母的对应: 1--1, abc--2, def--3, ghi--4, jkl--5, mno--6, pqrs--7, tuv--8 wxyz--9, 0--0,把密码中出现的小写字母都变成九键键盘对应的数字,如:a 变成 2,x 变成 9. 而密码中出现的大写字母则变成小写之后往后移一位,如:X ,先变成小写,再往后移一位,变成了 y ,例外:Z 往后移是 a 。 数字和其它的符号都不做变换。 数据范围: 输入的字符串长度满足 1 \le n \le 100 \1≤n≤100 输入描述: 输入一组密码,长度不超过100个字符。

输出描述: 输出密码变换后的字符串

示例1 输入: YUANzhi1987

输出: zvbo9441987


public class Main{
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int[] nums = new int[]{0,1,2,3,4,5,6,7,8,9};
        String[] zimus = new String[]{"0","1","abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"};
        String realStr = "";
        char[] chars = (scanner.nextLine()).toCharArray();
        for (int i=0;i<chars.length;i++) {
            char singleChar = chars[i];
            if (Character.isUpperCase(singleChar)) {
                // 是大写字母,转小写字母
                char xiaoxiezimu = Character.toLowerCase(singleChar);
                // 再往后移一位,tp:如果是字母z后移是a
                for (int j=0; j<zimus.length; j++) {
                    String zimusItemStr = zimus[j];
                    // 遍历字母数组,判断当前字母属于哪个item
                    if (zimusItemStr.contains(Character.toString(xiaoxiezimu))) {
                        if (zimusItemStr.charAt(zimusItemStr.length() - 1) == xiaoxiezimu) {
                            if (xiaoxiezimu != 'z') {
                                realStr += zimus[j+1].charAt(0);
                            } else {
                                realStr += 'a';
                            }
                        } else {
                            realStr += zimusItemStr.charAt(zimusItemStr.indexOf(xiaoxiezimu) + 1);
                        }
                    }
                }
            } else if (Character.isLowerCase(singleChar)) {
                // 是小写字母,转数字
                for (int k = 0; k < zimus.length; k++) {
                    if (zimus[k].contains(Character.toString(singleChar))) {
                        realStr += nums[k];
                    }
                }
            } else {
                // 其它情况直接添加
                realStr += singleChar;
            }
        }
        System.out.println(realStr);
    }
}