下面的代码中的“ - 97”是什么意思?

问题描述:

下面的代码中的“ - 97”是什么意思?下面的代码中的“ - 97”是什么意思?

if (dictionary[(int) word.charAt(0) -97 ].contains(word)) 

我们创建了一个26个LinkedList的数组来模拟字典。 每个列表包含以“a”,“b”,“c”,...开头的所有单词。 “Z”。代码由教师给出。

这里是附记:

要在特定MyLinkedList

假设你要搜索的词是叫wordstr一个String类型的变量搜索词。

dictionary [(int)wordstr.charAt(0) - 97].contains(wordstr) ; 

将允许你跳转到正确的链表,并包含将返回真/假取决于如果这个词是在列表与否。

我只是不明白为什么“-97”

97字符的数字值“a”,所以如果你从“A”和“Z”之间的字符减去97 ,你正在将该字符映射到0到25​​之间的数组索引。

+0

谢谢...所以,表达式[(int)wordstr.charAt(0) - 97]计算为字典数组的索引?而且,如果wordstr是“apple”,那么[(int)wordstr.charAt(0) - 97]意味着(字符在索引0的wordstr“apple”)?即,97 - 97 = 0,这是指数。那么“男孩”是指数=(98-97)= 1? – greg

+1

@greg是的,这是正确的 – Eran

+2

@greg由于混乱,你只需要将这些数字称为“魔术”,并且通常[我们应该避免它们](http://*.com/questions/47882/what-isa-a-魔号和 - 为什么 - 是 - 它坏)。而不是'(int)word.charAt(0)-97'部分可以写成'(int)wordstr.charAt(0) - 'a''这可能会更具可读性(如果你知道你可以减去字符在Unicode表中获得表示它们*距离*的整数)。 – Pshemo