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;
}
7 に答える
クラス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
.
charAt()
配列ではなく、指定された文字列から文字を返すメソッドであるためです。文字が書かれて'A'
います。文字列が書かれて"A"
います。
charAtは文字列内のメソッドであり、インデックスを受け入れるためです。String は内部的に char 配列を維持し、それはすべて私たちから隠されているため、配列自体ではなくメソッドがあります。
その理由-'A'
は、ユーザーがその文字を整数に変換したいからです。したがって、たとえば、あなたの文字は「B」であり、ユーザーはそれを使用してintに変換したいascii value of 'B' which is 66 - ascii value of 'A' which 65
num = 66 - 65 + 1
そして、さらに処理を行います。