0

重複の可能性:
Javachar配列から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"。ただし、andを使用するchartAt(0)charAt(1)、int値は。になり56ます。コマンド内で同じ呼び出しを使用するとSystem.out.println(stackCellString.charAt(0) + stackCellString.charAt(1))、正しい結果が得られます(つまり"88")。

4

3 に答える 3

2

次のように、文字をintとして解釈します。

56文字のASCIIコードです'8'

文字列から数字を取得する場合はInteger.parseInt()、前述のコメントの1つとしてのようなものを使用する必要があります。

より効率的な解決策は、ASCIIコードに基づいていくつかの計算を行うことかもしれません。すべての文字が10進数であることがわかっている場合は、数字を取得することができます(code - 48)(ここcodeで、はASCIIコードです)。たとえば、(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 に答える