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 回答
你写 A.charAt(i)
是因为charAt
是一个函数,而不是一个数组。
你写来计算's :th 字符和 characterA.charAt(i) - 'A'
之间的差异。A
i
'A'
该类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
.
A.charAt(i)
是字符串的一种方法,您也可以A[i]
直接访问相同的位置。
当您对字符进行操作(+ 或 -)时,您会得到一个int
.
因为charAt()
是一种从给定字符串返回字符的方法,而不是数组。字符被写入'A'
。字符串被写入"A"
。
因为charAt是字符串中的一个方法并且它接受索引。String 在内部维护 char 数组,它对我们来说都是隐藏的,因此你有一个方法而不是数组本身。
原因-'A'
是用户想要将该字符转换为整数。因此,例如,您的角色是“B”,用户希望使用将其转换为 intascii value of 'B' which is 66 - ascii value of 'A' which 65
num = 66 - 65 + 1
并做进一步处理。
因为 charAt() 是 java 中用于 string it 的方法,它返回一个字符。'A' 指的是 char 类型,而我们为字符串类型写“A” http://docs.oracle.com/javase/6/docs/api/java/lang/String.html#charAt%28int%29