Валидатор не пропускает решение почему-то. У меня при запуске все считывается как надо. Еще мне не понятно что указывает выражение BigDecimal(1). Что тут определяет единица? Я читал про значение знаков после запятой, но тут просто 1. Скажите что оно задает.
Я надеюсь проблема здесь не в исключениях. Мне просто так код кажется более правильным чем просто все проверять через if.
Валидатор не пропускает 2 и 3 пункт.
public class Solution {
public static void main(String[] args) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
try {
int input = Integer.parseInt(reader.readLine());
if (input >= 0){
reader.close();
System.out.println(factorial(input));
}
else {
throw new IllegalArgumentException("Число отрицательное. Введите положительное число");
}
}
catch (IOException e){
e.printStackTrace();
}
}
public static String factorial(int n) {
if (n == 0) return "0";
BigDecimal bigdec = new BigDecimal(1);
for (int i = 1; i <= n; i++) {
bigdec = bigdec.multiply(new BigDecimal(i));
}
return bigdec.toString();
}
}
package com.javarush.task.task15.task1531;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.math.BigDecimal;
/*
Факториал
*/
public class Solution {
public static void main(String[] args) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
try {
int input = Integer.parseInt(reader.readLine());
if (input >= 0){
reader.close();
System.out.println(factorial(input));
}
else {
throw new IllegalArgumentException("Число отрицательное. Введите положительное число");
}
}
catch (IOException e){
e.printStackTrace();
}
}
public static String factorial(int n) {
if (n == 0) return "0";
BigDecimal bigdec = new BigDecimal(1);
for (int i = 1; i <= n; i++) {
bigdec = bigdec.multiply(new BigDecimal(i));
}
return bigdec.toString();
}
}