[英]factorial in java using for loop
/* 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);
}
}
}
^^ 这个程序没有输出,谁能想到这里出了什么问题? 任何帮助将不胜感激,谢谢!
如果要使用命令行参数,则将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);
}
例如,对于输入5
,您应该将此程序作为java forLoop1 5
运行。
你在——嗯——几乎每一行都有问题。 看看下面的代码,并用 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);
}
}
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.
}
感谢您的回答! 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);
}
}
import java.util.*;
public class forLoop1{
public static void main(String args[]){
Scanner input=new Scanner(System.in);
System.out.println("Enter the number:");
int x=input.nextInt();
int finalint=1;
for( int init=1;init<=x;init++){
finalint=finalint*init;
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.