2013-01-02 27 views
0

可能重複:
Java char array to int的Java:問題轉換字符爲int

我有以下的代碼,其中stackCellsArrayList對象:

int[] stackCell = {0, 0}; 

if (!stackCells.isEmpty()) { 
    String stackCellString = stackCells.get(0); 
    stackCell[0] = stackCellString.charAt(0); 
    stackCell[1] = stackCellString.charAt(1); 
} 

所以我遇到的問題是stackCell不在將該字符解釋爲int。例如,stackCellString的值應該是"88"。但是,當我使用chartAt(0)charAt(1)時,我得到的int值爲56。如果我在System.out.println(stackCellString.charAt(0) + stackCellString.charAt(1))命令中使用這些相同的呼叫,我會得到正確的結果(即"88")。

+0

是什麼'stackCellString' – Woot4Moo

+0

@ Woot4Moo我把它寫在段落。 – capcom

+0

@KarthikT但我認爲一個'char'可以用作'int'而不需要強制轉換。我也嘗試過鑄造,沒有運氣。 – capcom

回答

1

56是數字8的ASCII碼要得到你想要的東西,你可以這樣做:

stackCell[0] = stackCellString.charAt(0) - '0'; 
stackCell[1] = stackCellString.charAt(1) - '0'; 
+0

完美的答案。沒什麼更簡單的。 – capcom

+1

更簡單的解決方案是不要傳遞字符串,因爲以後需要轉換它們。 – Woot4Moo

+0

@ Woot4Moo當然,但我別無選擇。給出的代碼沒有給出我的程序的上下文,所以我可以理解爲什麼你會發現我的方法混亂。 – capcom

0
String stackCellString="88"; 
     stackCell[0] = stackCellString.charAt(0); 
     stackCell[1] = stackCellString.charAt(1); 
     System.out.println(stackCell[0]); 
     System.out.println(stackCell[1]); 
     System.out.println(stackCell[0]+stackCell[1]); 
     System.out.println(stackCellString.charAt(0) + stackCellString.charAt(1)); 

輸出:

56 
56 
112 
112 

您不必返回charAt作爲其字符表示。

如果你希望它返回「88」,你需要這樣做:

stackCellString.subString(0,1) + stackCellString.subString(1,2); 

另一個解決辦法是這樣的:

"" + stackCellString.charAt(0) + stackCellString.charAt(1); 
+0

謝謝。但是,如果不是字符表示,我將如何迴歸它? – capcom

+0

@capcom你正在返回角色的短值。 – Woot4Moo

+0

有沒有一種「便宜」的方式來獲得我想要的?我需要8s作爲整數值,而不是子串。 – capcom

2

它解釋字符作爲以下列方式爲int :

56是字符'8'的ASCII碼。

如果你想從字符串中獲取數字,你需要使用類似Integer.parseInt()的東西作爲提到的註釋之一。

更有效的解決方案可能是基於ASCII碼做一些數學運算。如果您知道所有字符都是十進制數字,則可以使用(code - 48)來獲取數字(其中code是ASCII代碼)。例如,(56 - 48) = 8,這就是你想要的。

+0

做parseInt是非常昂貴的。 – Woot4Moo

+0

是的。或者,您可以根據ASCII碼計算數字。 – 808sound

+0

非常感謝。 ft1首先回答這個想法,所以我把這個給他/她。 – capcom