Netbeans IDE中java程序的最大char值是多少/我的程序有什么问题?

时间:2017-03-22 17:54:37

标签: java netbeans unicode

Java中char的最大Unicode值是多少(特别是在Netbeans IDE中,如果有任何区别的话)我一直在尝试编写一个程序,作为程序的一部分,它会增加一个char一个随机数。根据我所听到的,基于最大的Unicode值,我应该能够将最高值char I使用(波形符号)乘以至少8000而不会导致溢出,但是我的溢出确实发生了程序。最大Unicode char值与Netbeans中可用的最大值之间是否存在差异?如果不是这种情况,我在下面包含了我的代码:

编辑我想对这部分程序做什么是"加密"密码乘以一个随机数字,然后我包含一个单独的部分,用于解密"所说的代码,但是用较小的数字进行测试,我发现那部分工作了。

public static void main(String[] args) {

    String pass = "Password";
    String pwE = "";
    int key [] = new int[pass.length()];

    for (int i = 0; i < pass.length(); i++)
    {
        key[i] = (int)(Math.random()*8000+1); /*EDIT changed the placeholder to the actual function I'm using */
        System.out.println(key[i]);
    }

    for (int i = 0; i < pass.length(); i++)
    {
        pwE += (char)(pass.charAt(i)*key[i]);
    }
    System.out.println(pwE);
    pass = "";

     for (int i = 0; i < pwE.length(); i++)
    {
        pass += (char)(pwE.charAt(i)/key[i]);
    }    
    System.out.println(pass);
}

2 个答案:

答案 0 :(得分:0)

char是Java中的16位无符号类型。

最大值为65535。

你的char乘以键的元素看起来对我很怀疑。将此结果(将为int类型)转换为char会导致回绕模65536。

你怀疑的Netbeans是一只红鲱鱼。

非常粗略地说,如果你的字符串只使用ASCII字符,那么最大乘法值为512就可以了。

答案 1 :(得分:0)

“最大Unicode char值与Netbeans [sic]中可用的最大值之间是否存在差异?”

不,当然不是。 NetBeans没有自己的私有,不兼容的Java版本。正如文档所述,char的最大值始终为Character.MAX_VALUEhttp://docs.oracle.com/javase/8/docs/api/java/lang/Character.html#MAX_VALUE

您的问题很可能是由于您使用String来驱动“加密”和“解密”造成的。你不必费心去控制字符串编码,这可能会产生与代理对等有关的陌生感。您将char的数字性质与String使用该类型进行混合来表示字符。

由于您没有费心与我们分享输入,预期输出和实际输出,我们只能猜测。也许如果你要分享足够的信息......

相关问题