-3
public static int get(String A) // it is a method
{
        int count = 1;
        for (int i = 0; i < A.length(); i++) // So A reads line (any word, for example "Car"), so I understand that length will be 3 and that java will check all the characters.

        {
            int num = (A.charAt(i) - 'A') + 1;
            count *= num;
        }
        return count;
    }
4

7 に答える 7

1

クラスString不変オブジェクトまたは値オブジェクトです。主にパフォーマンス上の理由から、文字列を構成する文字に直接アクセスすることはできませんが、バグのクラス全体を回避するのにも役立ちます。

そのため、 を介した配列アクセスは使用できません[]。呼び出すことはできますが、基になる文字配列のコピーA.getChars()が作成されます。

char文字のコードです。'A' == 65、 例えば。この表を参照してください。A.charAt(1)返される場合'F'(または 70)、'F' - 'A'5 を返します。+1 は 6 を返します。

したがって、上記のコードは文字を数字に変換します。かなり頻繁に見られるパターンはcharAt(i) - '0'、文字列を数値に変換することです。

しかし、上記のコードはcount *= num、入力に対してかなりランダムな結果を生成するため、この点で奇妙です。文字を基数 26 の数字に変換するには、count = count * 26 + num.

于 2014-11-28T12:51:15.527 に答える
0

charAt()配列ではなく、指定された文字列から文字を返すメソッドであるためです。文字が書かれて'A'います。文字列が書かれて"A"います。

于 2014-11-28T12:48:17.740 に答える
0

charAtは文字列内のメソッドであり、インデックスを受け入れるためです。String は内部的に char 配列を維持し、それはすべて私たちから隠されているため、配列自体ではなくメソッドがあります。

その理由-'A'は、ユーザーがその文字を整数に変換したいからです。したがって、たとえば、あなたの文字は「B」であり、ユーザーはそれを使用してintに変換したいascii value of 'B' which is 66 - ascii value of 'A' which 65

num = 66 - 65 + 1

そして、さらに処理を行います。

于 2014-11-28T12:49:06.750 に答える