java中的factorial使用for循环 /*此程序 *查找任意数的阶乘 */ 公共类forLoop1{ 公共静态无效主(int x){ int init; 对于(init=x;init

java中的factorial使用for循环 /*此程序 *查找任意数的阶乘 */ 公共类forLoop1{ 公共静态无效主(int x){ int init; 对于(init=x;init,java,loops,for-loop,factorial,Java,Loops,For Loop,Factorial,^^这个程序没有输出,有人能想到这里出了什么问题吗?任何帮助都将不胜感激,谢谢 几乎每一行都有问题。查看下面的代码,并用n=4(或任何其他数字)跟踪每个步骤 这应该行得通。扫描仪将读取用户输入 在代码中,循环仅在init小于2时执行 下面是对代码中错误的解释: import java.util.Scanner; public class forLoop1{ public static void main(String args[]) { System.out.println("E

^^这个程序没有输出,有人能想到这里出了什么问题吗?任何帮助都将不胜感激,谢谢

几乎每一行都有问题。查看下面的代码,并用n=4(或任何其他数字)跟踪每个步骤

这应该行得通。扫描仪将读取用户输入

在代码中,循环仅在init小于2时执行

下面是对代码中错误的解释:

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);
  }
}
publicstaticvoidmain(intx){//应该是publicstaticvoidmain(String[]args)
int init;
对于(init=x;init<2;init--){//应该是init>=2
int finalint=init*--init;//可能应该是init*(init-1)
//在循环的每次迭代中,
//finalint将被覆盖
System.out.println(finalint);//这行没问题。
}

如果要使用命令行参数,请将
String
解析为
int

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.
}

例如,对于输入
5
,您应该以
Javaforloop1 5
的形式运行此程序。

谢谢您的回答!Arjun,很好,您的逻辑工作得非常完美 不过有几件事: 我不需要
(String[]args)
部分;我之前也提到过,因为我的IDE本身为
x
值获取输入。因此,这是我最后使用的代码:

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);
}
import java.util.*;
公共类forLoop1{
公共静态void main(字符串args[]){
扫描仪输入=新扫描仪(System.in);
System.out.println(“输入编号:”);
int x=input.nextInt();
int finalint=1;

对于(int init=1;init如果您只有一个类,并且这是唯一一个名为main的方法,那么您就没有程序的入口点,请将“int x”替换为“String[]args”,并在第一行中写入“int x=Integer.parseInt(args[0)”;非常感谢,请查看我的答案:)@Aashirshukla不客气。如果对您有帮助,请向上投票,并将您所写的答案标记为正确,以便查看问题的其他人知道答案已被回答。循环初始值设定项
x=x
是多余的,可以跳过。:)
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.
}
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);
}
  /* 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;
        }
    }
}