2012-12-11 15 views
3

錯誤是由於這是忽視爪哇 - 十六進制轉換爲十進制 - 做一個字符串=正確的數字

我最近創建了一個RGB值轉換爲十六進制一個Java程序中的錯誤。現在我正在嘗試制定一個相反的計劃。我已經想出了我將要使用的算法,我只需要將字符A - F轉換爲值10 - 15。似乎簡單的權利?這是我遇到問題的地方。

這裏是我到目前爲止的代碼。一個字符串被輸入到nums()中,然後對照數組abc進行檢查。一旦找到匹配它需要花費字符串a,並將其轉換爲整數,然後採取i,併爲了得到正確的數字加10。

class TextToNum { 
    String[] abc = { "A", "B", "C", "D", "E", "F" }; 
    public int nums(String a) { 
    for(int i = 0; i < abc.length; i++) { 
     if (a == abc[i]) { 
     a = Integer.parseInt(a.trim()); 
     a = i + 10; 
     } 
    } 
    return a; 
    } 
} 

我得到的錯誤是:

gbConv.java:52: incompatible types 
found : int 
required: java.lang.String 
       a = Integer.parseInt(a.trim()); 
            ^
rgbConv.java:53: incompatible types 
found : int 
required: java.lang.String 
       a = i + 10; 
        ^
rgbConv.java:56: incompatible types 
found : java.lang.String 
required: int 
     return a; 
      ^

很明顯的東西是錯誤的,但Integer.parseInt()我不知道如何解決它。我一直在網上看,我找不到任何東西。任何建議/教程將是一個很大的幫助。

+0

通行證基數或解析信前加0X。 – fatfredyy

+3

爲什麼不使用int a = Integer.parseInt(hexString,16)? –

+2

錯誤告訴你到底是什麼問題。你正試圖在這段代碼中使用'a'作爲'String'和'int'。另外,*從不*使用'=='比較'字符串'。這不符合你的想法。 –

回答

9

你爲什麼不試試這已經是可用的。

Color.decode("hex string"); 
+0

爲什麼要投票?請解釋。 – Smit

+5

我不知道,這比parseInt和一堆按位操作要好得多。 +1 – Esailija

1

Integer.parseInt(String str)僅在str包含整數時有效。就像如果你有字符串作爲str="12345"Integer.parseInt(str)結果12345爲整數。

但在你的情況中提到你逝去的"A", "B", "C", "D", "E", "F"任何一個。

+1

'-1'你提到了一個很好的提示,但沒有解決問題了,我相信這一定是對Smit的答案的評論,但不是一個答案 –

相關問題