2016-11-23 103 views
1

我已经被要求创建一个程序,它将接收一个数字并且每个循环取1,直到它达到0,然后输出每个数字和它们乘以找到fractorial并显示它的工作,例如5 * 4 * 3 * 2 * 1 = 120

例如,如果用户进入5的输出应是

5 * 4 * 3 * 2 * 1 = 120

我尝试没有运气

int factor = sc.nextInt(); 
    int count = 0; 
    int total = factor; 
    StringBuilder answer = new StringBuilder(); 
    answer.append(factor); 
    while(factor>0) 
    { 

     for(int i = factor; i >= 0; i--) 
     { 
      count++; 
      total = total*count; 
      total = total -1; 
      if(i==factor) 
      { 
       answer.append(" = ").append(total); 
      } 
      else 
      answer.append(" * ").append(String.valueOf(i)); 
     } 

    } 
    int sanswer=Integer.parseInt(answer.toString()); 
    return sanswer; 
} 
以下
+0

我想你说的是阶乘,你可以看到这个:http://stackoverflow.com/questions/891031/is-there-a-method-that-c​​alculates-a-factorial-in-java –

+0

是的谢谢我试图找到一个问题,但没有找到一个解决方案生病看看 – studentprogrammer

回答

0

首先在每次迭代循环追加数i。然后决定追加*或最后=根据以下迭代是否为最后一个。打印=后,只剩下打印结果编号。如果字符串包含非数字字符,则不能将字符串转换为int。

试试下面的代码:

Scanner sc = new Scanner(System.in); 
int num = sc.nextInt(); 
long factorial = 1L; 
StringBuilder answer = new StringBuilder(); 

for (int i=num; i>0; i--) { 
    answer.append(i); 
    if (i-1>0) { 
     answer.append("*"); 
    } else { 
     answer.append("="); 
    } 
    factorial *= i; 
} 
answer.append(factorial); 
System.out.println(answer); 

输入:8。输出:8*7*6*5*4*3*2*1=40320

输入:5。输出:5*4*3*2*1=120

0

其实它是任务用于阶乘计算。 You can find a various of realization here

如果你不想使用递归:

INT因子(INT输入)

int x, fact = 1; 
    for (x = input; x > 1; x--) 
    fact *= x; 

    return fact; 
+0

我知道如何做到这一点,我尝试它的原因另一种方式是因为答案需要显示的方式,因为它需要像例如一样返回5 * 4 * 3 * 2 * 1 = 120 – studentprogrammer

相关问题