/* this program
* finds the factorial for any number
*/
public class forLoop1{
public static void main(int x){
int init;
for( init = x; init < 2; init--){
int finalint = init * --init;
System.out.println(finalint);
}
}
}
^^这个程序没有输出,有人能想到这里出了什么问题吗?任何帮助将不胜感激,谢谢!
答案 0 :(得分:1)
如果要使用命令行参数,则将String
解析为int
。
public static void main(String args[]) {
int n=Integer.parseInt(args[0]);
int fac = 1;
for(int i = n; i >= 2; i--) {
fac = fac * i;
}
System.out.println(fac);
}
例如,对于输入java forLoop1 5
,您应该将此程序作为5
运行。
答案 1 :(得分:0)
你有问题 - 嗯 - 几乎每一行。查看下面的代码并使用n = 4(或任何其他数字)跟踪每个步骤。
public class forLoop1{
public static void main(String[] args){
// n is the number whose factorial is to be calculated
int n = 10;
int factorial = 1;
for(int i = n; i >= 2; i--){
factorial = factorial * i;
}
System.out.println(factorial);
}
}
答案 2 :(得分:0)
import java.util.Scanner;
public class forLoop1{
public static void main(String args[])
{
System.out.println("Enter a number greater than zero.");
Scanner in = new Scanner(System.in);
int n = in.nextInt();
in.close();
int fact = 1;
for (n = n; n>=2; n--)
fact *= n;
System.out.println("Factorial of "+n+" is = "+fact);
}
}
这应该有效。 扫描仪将读取用户输入。
在你的代码中,循环只会在init 小于 2时才会执行。
以下是代码中错误的说明:
public static void main(int x){ //Should be public static void main(String[] args)
int init;
for( init = x; init < 2; init--){ //Should be init >= 2
int finalint = init * --init; //Possibly should be init * (init - 1)
//In each iteration of the loop,
//finalint will be overwritten
System.out.println(finalint); //This line is fine.
}
答案 3 :(得分:0)
感谢您的回答! Arjun,你的逻辑完美无缺
但有几点:
我不需要(String[] args)
部分;我之前也提到过,因为我的IDE自己输入了x
值。所以这是我最后使用的代码:
/* Factorial
* program
*/
public class forLoop2 {
public void main(long x) { // long x is correct, as my IDE takes input through this
long fact = 1;
for( x = x; x >= 2; x--)
fact = fact * x;
System.out.println(fact);
}
}
答案 4 :(得分:0)
public override bool CanConvert(Type objectType)
{
return typeof(DateTime?).IsAssignableFrom(objectType);
}