2012-01-25 3 views
0

Я не понимаю % comment.length бит следующего кода:Что делает comment.charAt (i% comment.length())?

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

ли часть между кронштейнами преобразовать в целое число со значением, которое представляет i по отношению к длине комментария?

Например, если:

comment = "test" 
i = 2 

что бы comment.charAt(i % comment.length()) быть?

+0

2% 4 => 2. И символ с индексом 2 - ** s **. Я что-то пропустил? – Mahesh

+0

Ну, вы в основном говорите 'comment.charAt (0.5)', который не работает, поскольку метод 'charAt()' принимает в качестве аргумента только положительные целые числа. – fireshadow52

+1

@ fireshadow52 - Возможно, захотите [перечислить это] (https://www.google.com/search?q=2+%25+4). –

ответ

6

% является оператором modulo, поэтому для вашего примера i % comment.length() разрешит 2 % 4 = 2. Это вернет третий символ (по индексу 2).

Операция modulo, по-видимому, является защитой для случаев, когда i >= comment.length().

Рассмотрите следующий случай: i = 11 и comment = "test". Если вы просто используете comment.chatAt(i), вы получите исключение, так как есть только 4 символа. Операция modulo будет обертывать это вокруг и приводит к 11 % 4 = 3 и возвращает в этом случае четвертый символ (индекс 3).

+0

Спасибо! Я понимаю! Он возвращает остальную часть дивизии! так 13% 3 = 1, 5% 3 = 2, 5% 2 = 1 и так далее. –

+0

Ровно! Если вам нравится этот ответ ... вы должны выбрать его! – ByteMe

2

% оператор по модулю: она дает остаток от деления нацело

10 % 3 = 1 

как 10/3 = 3 с остатком 1

Ваше заявление только гарантирует, что аргумент функции будет меньше, то длина строки.

Но Я бы предпочел проверить это по-другому. Это довольно противоречиво, чтобы просить персонажа в позиции 11 в строке длиной 10 символов и получить символ в позиции 1 вместо предупреждения или сообщения об ошибке.

Смежные вопросы