Java - 为什么打印出“007F”?

Java - why is "007F" printing out?

下面的代码是根据ASCII值解密"secret"message :mmZ\dxZmx]Zpgy

它应该打印出什么:"Attack at dawn!"

目前输出的内容:"Attack 007F at 007F dawn?"

基本上,现在 x = "007F"y = "?"

我需要 x = SPACE 或“ ”,以及 y = "!"

感谢您的宝贵时间。

public class decryption
{
    public static void main(String[] args)
    {
        String secretMessage = ":mmZ\dxZmx]Zpgy";
        System.out.println(decryption(secretMessage, 88));
    }//end main

    public static String decryption(String s, int n)
    {
        int originalChar, decryptedChar;
        String message = "";
        char c;

        for(int i = 0; i < s.length(); ++i)
        {
            c = s.charAt(i);
            decryptedChar = (int)c;
            if(decryptedChar + n > 126)
               originalChar = 32 + ((decryptedChar + n) - 113);
                  else
                     {originalChar = decryptedChar + n;
                     c = c;}
            message = message + (char)originalChar;
        }//end for loop
        return message;
    }//end method
 }//end class

我修好了。问题是 ASCII 值 > 126 是不正确的,所以简单地减去 95 修复了解密!

public class decryption
{
public static void main(String[] args)
{
 String secretMessage = ":mmZ\dxZmx]Zpgy";
 System.out.println(decryption(secretMessage, 88));
}//end main

public static String decryption(String s, int n)
{
 int originalChar, decryptedChar;
 String message = "";
 char c;

 for(int i = 0; i < s.length(); ++i)
 {
  c = s.charAt(i);
  decryptedChar = (int)c;
  if(decryptedChar + n > 126)
     originalChar = 32 + ((decryptedChar + n) - 113);
       else
     {originalChar = decryptedChar + n;
     c = c;}
      if (originalChar > 126)
      originalChar = originalChar - 95;
  message = message + (char)originalChar;
 }//end for loop
 return message;
}//end method
}//end class