Я склонен согласиться с вами, но я прочитал (и, надеюсь, кто-то может предоставить ссылку или две на) статьи, в которых объясняется, что «%» Java соответствует его «/», и этого достаточно для всех. Из собственного опыта:
Оператор Java '%' немного отличается от некоторых других языков 'в обработке отрицательных входных данных. Я лично предпочитаю операторы "по модулю", которые возвращают неотрицательные значения, например
-5 % 2 == 1
Что бы заставить ваш пример работать. Я думаю, что есть официальное название для этой операции, но я не могу об этом думать сейчас, поэтому я буду придерживаться "по модулю". Разница между этими двумя формами заключается в том, что Java-вариант «a% b» выполняет «a / b» и округляет до нуля (и вычитает результат, полученный из «a»), тогда как предпочтительная операция вместо этого округляется в меньшую сторону.
Каждое практическое использование применения% к отрицательному 'a' и положительному 'b', которое я видел, работает легче, если результат 'r' равен '0 <= r <b' (один из примеров - найти смещение от крайний левый край элемента мозаичного изображения, когда сопоставление указывает на элементы мозаичного изображения на плоскости, которая может расширяться '<0'). Единственное исключение из этого опыта было в университетском задании, которое выполняло статический анализ целочисленной арифметики в программах Java. Именно во время этого задания выяснились тонкости Java '%', и я старался изо всех сил заменить его на «фиксированную» версию. Все это имело обратный эффект, потому что цель состояла в том, чтобы смоделировать, как Java выполняет арифметику, а не в реализации моего предпочтительного вида. </p>