7

私はHelloAndroidの本を読みましたが、この関数のコードの一部を理解していません。

charAt(i)の横に-'0'を使用する理由は??

static protected int[] fromPuzzleString(String string) {
    int[] puz = new int[string.length()];
    for (int i = 0; i < puz.length; i++) {
        puz[i] = string.charAt(i) - '0' ;
    }
    return puz; 
 }

ありがとうございます。乾杯。

4

5 に答える 5

9

string.charAt(i)を返すのでchar。しかしpuzですint[]

したがってstring.charAt(i) - '0'、それを整数に変換します。

于 2012-09-15T14:49:47.797 に答える
4

あなたがやろうとしているのは、一度に 1 つずつ char を読み取り、それを int に変換して配列に格納することです。

0 の ASCII コードは 48 です。したがって、実際にやろうとしているのは、その特定の場所にあるcharの ASCII 値からこの値を減算し、数値結果を対応するインデックスに格納することです。

ループで印刷しようとすると、次のように自分で確認できます。

System.out.println((int)string.charAt(i));
System.out.println((int)'0');
于 2012-09-15T15:09:20.823 に答える
2

Character.isDigit(char)andを使用しCharacter.getNumericValue(char)て、char をテストし、整数値に変換することをお勧めします。

于 2012-09-15T16:00:39.807 に答える
1

文字列は数値です。このコードは、文字列を整数配列に変換します。
string.charAt(i)文字string.charAt(i)- '0'を返し、実際の整数値を返します。
たとえば、string = "12345"の場合、このメソッドは整数配列[1,2,3,4,5]を返します。

于 2012-09-15T14:53:13.290 に答える
0

この特定の操作の目的はわかりませんが、Java(および多くのプログラミング言語)では、文字(char)は整数値(Javaでは小さい2バイトのみ)として表されます。次のように、文字を整数に明示的にキャストできます。

int x = (int) 'a';

このコードは似たようなことをしていると思います。このString.charAt()関数はを返しますchar。これをintのように扱うと、120のような値になります(例のみ)。'0'(としてchar)にも値があります。それらを差し引くと、整数値が得られます。

于 2012-09-15T14:54:39.267 に答える