java中的factorial使用for循环 /*此程序 *查找任意数的阶乘 */ 公共类forLoop1{ 公共静态无效主(int x){ int init; 对于(init=x;init
^^这个程序没有输出,有人能想到这里出了什么问题吗?任何帮助都将不胜感激,谢谢 几乎每一行都有问题。查看下面的代码,并用n=4(或任何其他数字)跟踪每个步骤 这应该行得通。扫描仪将读取用户输入 在代码中,循环仅在init小于2时执行 下面是对代码中错误的解释: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
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;
}
}
}