2013-06-27 134 views
0

我有一個EditText用戶鍵入一個十六進制數字,我想將其轉換成十進制數並在TextView上顯示它,但我甚至不能在TextView上顯示十六進制數字,因爲有一個例外:「無法解析「字符串」作爲整數 我只能在TextView顯示數字,當我鍵入的字符,它拋出異常如何獲取十六進制輸入並將其轉換爲十進制?

這裏是一塊代碼:。

EditText edText1 = (EditText) findViewById(R.id.editText1); 
TextView result = (TextView) findViewById(R.id.textView1); 
result.setText(""+ Integer.parseInt(edText1.getText().toString(), 16)); 
+2

那麼你想要解析的文字是什麼? – John3136

+0

edText1的內容可能包含字母,因爲十六進制可以包含字母,並且不能將字母轉換爲整數 – 2013-06-27 03:56:09

+0

該文本已經在edText1(鍵盤輸入)中設置並且包含數字和字符從a到f – tallito

回答

2

在我看來,就像你在edText1.getText()的初始情況下得到一個錯誤,當textfield是空的,它仍然存儲值 - """"仍然是String,仍然有內容,但它不是一個整數。所以,當你在上面做Integer.parseInt()它做財產以後象下面這樣:

result.setText("" + Integer.parseInt("", 16)); 

""顯然不是一個整數或十六進制,但它仍然是一個String所以它有格式化的問題,然後拋出錯誤。

+0

好吧,我沒有說當我把 result.setText(「」+ Integer.parseInt(edText1.getText()。toString(),16)); edText1已經包含用戶輸入的一些文本,例如, 「10AE」 當我把一些字符串,而不是edText1.getText()。toString()應用程序的作品!例如,如果我把: result.setText(「」+「10e」,16)); 結果TextView顯示'270',沒關係。請幫助! – tallito

相關問題