comment.charAt(i%comment.length())做什么?

时间:2012-01-25 13:51:53

标签: java variables

我不理解以下代码的% comment.length位:

comment.charAt(i % comment.length())

括号之间的部分是否会转换为一个整数,其值与注释长度相关,代表i

例如,如果:

comment = "test"
i = 2

comment.charAt(i % comment.length())会是什么?

2 个答案:

答案 0 :(得分:6)

%是模运算符,因此对于您的示例i % comment.length()将解析为2 % 4 = 2。这将返回第三个字符(在索引2处)。

对于i >= comment.length()的情况,模运算似乎是一种安全措施。

请考虑以下情况:i = 11comment = "test"。 如果你只使用comment.chatAt(i),你会得到一个例外,因为只有4个字符。模运算将包围它并导致11 % 4 = 3并在这种情况下返回第四个字符(索引3)。

答案 1 :(得分:2)

%是模运算符:它为您提供整数除法的余数

10 % 3 = 1

10 / 3 = 3,其余为1

您的语句只是确保函数参数小于字符串长度。

但是我宁愿以另一种方式检查这个问题。在字符串长10个字符中请求第11位的字符并在第1位获取字符而不是警告或错误消息是非常违反直觉的。