键入字母 z 时跳过字母不起作用

Skipping letters not working when typing letter z

当用户输入一个字母,然后输入要跳过的数字时,我遇到了问题。例如,用户输入字母 abc,然后输入要跳过的 2 个数字,输出为 cdf,在我的程序中,这工作正常。但是,当用户输入 xyz,然后输入数字 4 时。我的程序无法运行。此外,所有带有 z 的字母都不会显示输出。例如xyz,那么要跳过的数字是1输出将只有yz。

public class Test2 {

private Scanner sc = new Scanner(System.in); 
private char characters[]=     {'a','b','c','d','e','f','g','h','i','j','k','l','m',
        'n','o','p','q','r','s','t','u','v','w','x','y','z'};

}

我认为您正在寻找的是某种模数功能,如果偏移量超过字母 z,则字母 "wraps" 位于字母表的开头。试试这个代码:

String alphabet = "abcdefghijklmnopqrstuvwxyz";
for (int f=0; f < text.length(); f++) {
    int index = alphabet.indexOf(text.charAt(f));
    System.out.println(alphabet.charAt((index + num) % 26));
}

此代码片段已在 IntelliJ 上测试,输入 xam4 给出正确的输出 beq