Проблема в цикле for во фрагменте кода:
for (i> 0; i -;)
Здесь ваше намерение, похоже, войти в цикл, если (i> 0) и уменьшить значение i на единицу после завершения цикла for .
Это работает так?давайте посмотрим.
Посмотрите на синтаксис цикла for ():
**for ( initialization; condition check; increment/decrement ) {
statements;
}**
Инициализация выполняется только один раз в начале цикла.Обратите особое внимание на ";"в вашем фрагменте кода и сопоставьте его с синтаксисом цикла for.
Инициализация: i> 0: выполняется только один раз.Не оказывает никакого влияния на ваш код.
Проверка состояния: i -: пост декремент.
Here, i is used for condition check and then it is decremented.
Decremented value will be used in statements within for loop.
This condition check is working as increment/decrement too in your code.
Давайте остановимся здесь и увидим исключение с плавающей запятой.
что это?Один простой пример - деление на 0. То же самое происходит с вашим кодом.
Когда я достигаю 1 в проверке состояния, проверка состояния подтверждается как истинная.
Из-за постдекремента я буду 0, когда он входит в цикл.
Modulo operation at line #9 results in divide by zero operation.
С этим фоном вы сможете исправить проблему в цикле for.