簡體   English   中英

Netbeans IDE中的Java程序中最大的char值是多少/我的程序有什么問題?

[英]What is the maximum char value in a java program in Netbeans IDE/ what is wrong with my program?

在Java中,char的最大Unicode值是多少(特別是在Netbeans IDE中,如果有區別的話)?我一直在嘗試編寫一個程序,該程序將char乘以一個隨機數作為程序的一部分。 根據我所聽到的,基於最大Unicode值,我應該能夠將正在使用的最高字符char(代字號)乘以至少8000,而不會引起溢出,但是程序中確實發生了溢出。 最大Unicode字符值和Netbeans中可用的最大值之間有區別嗎? 如果不是這種情況,我將下面的代碼包括在內:

編輯我要在程序的這一部分進行的操作是通過將char與一個隨機數相乘來“加密”密碼,然后我准備了一個單獨的部分來“解密”所述代碼,但是用較小的數字進行測試后發現那部分工作了。

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);
}

字符是Java中16位無符號類型。

最大值為65535。

您將char乘以key元素對我來說似乎很可疑。 您將此結果(將為int類型)轉換為char會導致環繞模65536。

您懷疑Netbeans是紅鯡魚。

非常粗略地講,如果您的字符串僅使用ASCII字符,則最大乘數為512即可。

“最大Unicode字符值和Netbeans [sic]中可用的最大值之間有區別嗎?”

不,當然不。 NetBeans沒有自己的私有非兼容版本的Java。 如所記錄, char的最大值始終為Character.MAX_VALUE http://docs.oracle.com/javase/8/docs/api/java/lang/Character.html#MAX_VALUE

您的問題很可能是由於使用String驅動“加密”和“解密”引起的。 您不必費心控制字符串編碼,並且可以想象,這可能會在代理對等方面產生陌生感。 您正在將char的數字性質與String的類型表示字符混合使用。

由於您不必費心與我們共享輸入,預期輸出和實際輸出,因此我們只能猜測。 也許如果您要分享足夠的信息...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM