Простая ошибка Java

#java #coding-style

#java #стиль кодирования

Вопрос:

Это факториальная программа на Java, она не работает, пожалуйста, сообщите мне об ошибках. Спасибо!

 class Fact {
   public static void main(String[] args) {

      int i=5,num=1;

      while(i>1) {
         num=num*i;
      }
      i--;

      System.out.println("Value: "   num);      
   }
}
  

Комментарии:

1. Вы i уменьшаетесь за пределами цикла while. Переместите его внутрь цикла while. В настоящее время он входит в бесконечный цикл.

2. Использование логичного и последовательного способа отступов в блоках кода помогает читателю понять ход программы. В этом коде используется отступ, который совсем не логичен.

Ответ №1:

Вы уменьшаете переменную i вне while цикла, когда она должна быть внутри него.

   while(i>1)
  {
     num=num*i;
  }
  i--;
  

Должно быть:

   while(i>1)
  {
     num=num*i;
     i--;
  }
  

В вашем текущем коде говорится while *i* is greater than 1 do your multiplication следующее . Проблема в том, что i всегда будет больше 1, поскольку вы никогда не вычитаете из него.

Ответ №2:

  1. Используйте уменьшение i внутри цикла
  2. Добавьте проверку на отрицательное значение (вы также должны обработать значение 0)

Комментарии:

1. Что касается вашего второго пункта: это будет зависеть от того, сколько раз он хотел бы повторить, и поскольку он не указал, что мы не знаем, должно ли это быть 4 или 5 раз 😉

2. Я имею в виду, что вы должны обрабатывать что-то вроде fact(-2), fact (0) и т.д.

3. Это было бы правдой, если бы это был метод, который будет использоваться в реальной жизни, я сомневаюсь, что это не так, поскольку он находится в основном методе 🙂 Но хороший момент