2013-01-02 61 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