2015-12-21 65 views
-1

我增加了兩個十六進制數,並返回它們作爲一個字符串, 我怎麼能存儲字符串值轉換成int?它不適合我。 這是我正在處理的代碼。如何在使用長度時將字符串值保存爲Int值?

的INT A和B都沒有采取NUM1和NUM2爲INT的字符串,我該怎麼辦呢?

public static String Addtion(String num1, String num2){ 
    int sum, carry=0; 
    int A = num1.length()-1; 
    int B = num2.length()-1; 
    String astn=""; 
    if (B < A && B!= A){ 
     num2 = '0' + num2; 
     B++; 
    } 

    while(B>=0){ 
     sum = (con(num1.charAt(A))+con(num2.charAt(B))+carry)%16; 
     carry= (con(num1.charAt(A))+con(num2.charAt(B))+carry)/16; 
     astn = toHexChar(sum) + astn; 
    A--; 
    B--; 
} 
    return astn ; 
} 
+1

@redFIVE - 通過我閱讀這篇文章,該另一個問題是不接近重複。儘管這篇文章的標題不是很好,但OP的問題似乎與將String轉換爲int無關。 –

+0

他在他的「問題」中清楚地說過「我如何將字符串值存儲爲int?」 – redFIVE

+0

@redFIVE - 我知道,但請看代碼。 OP正試圖模擬十六進制逐字符添加。 'A'和'B'實際上是十六進制字符串的_lengths_(減1),而不是解析的十六進制值。整個算法在其他情況下是沒有意義的。 OP的問題是由於沒有正確處理這些長度(根據我的答案)。 OP顯然不是以英語爲母語的人,應該對此做出一些補貼。 (請注意,對於我們所知道的,這些可能是10,000位數字的hext字符串,在Java中不可能將其解析爲本地整數類型。) –

回答

-1

如果你的輸入是基16號的字符串表示,你需要它轉換成(基10)int,然後使用:

Integer.parseInt(hex, 16); 
+0

不要回答已經提出和回答在這個網站 – redFIVE

+0

@redFIVE問題 - 您可能希望通過http://meta.stackoverflow.com/questions/252009/should-there-be-a-deterrent-閱讀for-answering-obvious-duplicate-questions –

+0

@redFIVE不會根據您的個人喜好講授我。謝謝,再見。 – Keith

0

你不處理長度差異正確。首先,您需要將if更改爲while,因爲長度差可能會大於1。其次,你的代碼只檢查是否num2短於num1,你需要做反向也是如此。最後,您在添加循環結束後忽略了非零進位的可能性。這可能會訣竅:

public static String Addtion(String num1, String num2){ 
    int sum, carry=0; 
    int A = num1.length()-1; 
    int B = num2.length()-1; 
    String astn=""; 
    while (A < B) { 
     num1 = "0" + num1; 
     A++; 
    } 
    while (B < A) { 
     num2 = "0" + num2; 
     B++; 
    } 

    while(B>=0){ 
     sum = (con(num1.charAt(A))+con(num2.charAt(B))+carry)%16; 
     carry= (con(num1.charAt(A))+con(num2.charAt(B))+carry)/16; 
     astn = toHexChar(sum) + astn; 
     A--; 
     B--; 
    } 
    if (carry > 0) { 
     astn = toHexChar(carry) + astn; 
    } 
    return astn ; 
} 
相關問題