java 中的阶乘使用 for 循环
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);
}
}
}
^^ 这个程序没有输出,谁能想到这里出了什么问题?任何帮助将不胜感激,谢谢!
你在 -- 嗯 -- 几乎每一行都有问题。查看下面的代码并使用 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.
}
如果您想使用命令行参数,则将 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
例如。
感谢您的回答! 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;
}
}
}
/* 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);
}
}
}
^^ 这个程序没有输出,谁能想到这里出了什么问题?任何帮助将不胜感激,谢谢!
你在 -- 嗯 -- 几乎每一行都有问题。查看下面的代码并使用 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.
}
如果您想使用命令行参数,则将 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
例如。
感谢您的回答! 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;
}
}
}