Java:将char转换为int的问题

时间:2013-01-02 03:43:41

标签: java

  

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

3 个答案:

答案 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);