有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

打印字符时出现java未知问号

对于一个类项目,我正在生成一个类似ROT13的加密方法,我们唯一的区别是,它不是第13个字符,而是第9个字符。令人惊讶的是,我能够生成一些对小写字母有效的东西,看看我的方法是否有效

它可以工作,但由于某些原因,会出现奇怪的字符,更常见的是问号,有时只是原始字符数组中没有的额外字符

例如:我的名字导致ljb|nh?|和{}不应该在那里,至少据我所知,他们不应该在那里

有人能通过查看我的代码来告诉我为什么会发生这种情况吗

public class Encrypt {
    public static void main(String[] args) {
        // Lower a-z: 97-122; Higher A-Z: 65-90
        jumble("casey");
    }
    public static void jumble(String input) {
        char[] phraseChar = input.toCharArray();
        // StringBuilder output = new StringBuilder("");

        for (int i = 0; i < phraseChar.length; i++) {
            System.out.print("" + phraseChar[i]);
        }

        System.out.println();

        for (int j = 0; j < phraseChar.length; j++) {
                int i = (int) phraseChar[j];
                if (i >= 'a' && i <= 'z') {
                    i += 9;
                    if (i > 'z') {
                        int newChar = 96 + (i - 'z');
                        System.out.print((char) newChar);
                    }
                    System.out.print((char) i);
            }
        }
    }
}

任何能帮我找出这个问题的人都是圣人


共 (1) 个答案

  1. # 1 楼答案

    if (i >= 'a' && i <= 'z') { 
       i += 9; 
       if (i > 'z') { 
           int newChar = 96 + (i - 'z'); 
           System.out.print((char) newChar); 
       } 
       System.out.print((char) i);
     }
    

    如果i超出范围,则打印“已更正”字符和原始超出范围字符。放一个else

    我不是圣人。使用调试器处理这些事情。这些知识在未来会很有用