#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:
- Используйте уменьшение i внутри цикла
- Добавьте проверку на отрицательное значение (вы также должны обработать значение 0)
Комментарии:
1. Что касается вашего второго пункта: это будет зависеть от того, сколько раз он хотел бы повторить, и поскольку он не указал, что мы не знаем, должно ли это быть 4 или 5 раз 😉
2. Я имею в виду, что вы должны обрабатывать что-то вроде fact(-2), fact (0) и т.д.
3. Это было бы правдой, если бы это был метод, который будет использоваться в реальной жизни, я сомневаюсь, что это не так, поскольку он находится в основном методе 🙂 Но хороший момент