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
下面的代码是根据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