Java - 为什么打印出 "007F"?

标签 java system.out

以下代码旨在根据ASCII值解密“ secret ”消息:mmZ\\dxZmx]Zpgy

它应该打印出什么:“黎明时分进攻!”

当前打印的内容:“在 007F 黎明时攻击 007F?”

所以基本上,现在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

关于Java - 为什么打印出 "007F"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34216662/

相关文章:

java - 如何将随机数从Java类传递到html文件

java - 覆盖 System.out/err.println

java - 为什么 ('1' +'1' ) 在 Java 中输出 98?

java - System.out.println/System.err.println 的 JUnit 测试

java - 如何用记录器替换 System.out 或 System.err 的使用?

java - 我想从数据库获取数据并用数组检查它,但它不起作用

java - import org.apache.log4j.Classloader 无法解析

java synchronized on 方法不工作?

java - JVM 的功能/不可变数据结构?

Java 打印带有两个分隔符的数组