可能重复:
Java char array to int
我有以下代码,其中stackCells
是ArrayList
对象:
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)
时,我得到一个56
的int值。如果我在System.out.println(stackCellString.charAt(0) + stackCellString.charAt(1))
命令中使用相同的调用,我会得到正确的结果(即"88"
)。
答案 0 :(得分:2)
它以下列方式将字符解释为int:
56
是字符'8'
的ASCII码。
如果您想从字符串中获取数字,您需要使用Integer.parseInt()
之类的内容作为上述评论之一。
更有效的解决方案可能是基于ASCII码进行一些数学运算。如果您知道所有字符都是十进制数字,则可以(code - 48)
获取数字(其中code
是ASCII代码)。例如,(56 - 48) = 8
,这就是你想要的。
答案 1 :(得分:1)
56是数字8的ASCII码。为了得到你想要的,你可以这样做:
stackCell[0] = stackCellString.charAt(0) - '0';
stackCell[1] = stackCellString.charAt(1) - '0';
答案 2 :(得分: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);