public class Factorial {
int fact (int n) {
int result;
if (n==1 ||n==0)
return 1;
else
result = n*fact(n-1);
return result;
}
假设n小于0(-1,-2等)且这些值的阶乘值为“无效”(如果输入值(n)为,则我希望系统打印出“无效”小于0.如何修改代码。我理解该方法只返回一个整数值,而不是String。
答案 0 :(得分:1)
只需添加if
语句检查否定输入。因子不应该返回负数,因此您可以返回-1
来指示错误:
int fact (int n) {
if (n < 0) {
return -1;
}
if (n==1 || n==0) {
return 1;
}
else {
return n * fact(n-1);
}
}
答案 1 :(得分:1)
正如@Saravana所说,你必须添加一个看起来像这样的throws语句:
int factorial (int n)
{
if (n < 0)
{
throw new IllegalArgumentException("Sorry value cannot be negative");
}
if (n==1 || n==0)
{
return 1;
}
else
{
return n * fact(n-1);
}
}
如果任何小于零的值,则会出现错误,指出用户没有输入正确的值。希望这有帮助! :)
答案 2 :(得分:1)
我希望系统打印出来&#34;无效&#34;如果输入值(n)小于0
您可以通过添加
来完成此操作if (n < 0) {
System.out.println("Not valid");
}
在方法的开头。字符串&#34;无效&#34;该方法不会退回,但会打印出来。
之后,退出该方法而无需进一步计算将是有意义的。您可以通过以下任一方式根据您的需要执行此操作:
如果您的程序可以执行更多操作,那么只需计算一个因子,并且在任何情况下都需要返回值:
if (n < 0) {
System.out.println("Not valid");
return -1; // or some other inapplicable for a factorial result integer value
}
或者你也可以&#34;艰难退出&#34;整个程序whitout返回任何值,如
if (n < 0) {
System.out.println("Not valid");
System.exit(1); // 1 or any other nonzero integer value
// to tell the system it exits with an error. 0 otherwise
}