0

可能重复:
Java char 数组到 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)and时charAt(1),我得到一个 int 值56。如果我在命令中使用这些相同的调用System.out.println(stackCellString.charAt(0) + stackCellString.charAt(1)),我会得到正确的结果(即"88")。

4

3 回答 3

2

它通过以下方式将字符解释为 int:

56是字符的 ASCII 码'8'

如果您想从字符串中获取数字,您将需要使用类似于Integer.parseInt()上述评论之一的内容。

更有效的解决方案可能是根据 ASCII 码进行一些数学运算。如果您知道所有字符都是十进制数字,则可以(code - 48)获取该数字(codeASCII 码在哪里)。例如,(56 - 48) = 8,这就是你想要的。

于 2013-01-02T03:51:25.140 回答
1

56 是数字 8 的 ASCII 码。要得到你想要的,你可以这样做:

stackCell[0] = stackCellString.charAt(0) - '0';
stackCell[1] = stackCellString.charAt(1) - '0';
于 2013-01-02T03:53:14.943 回答
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);
于 2013-01-02T03:48:05.527 回答