如何在Java中创建阶乘及其说明
问候互联网上的人们 我是Java的新手。我有一个关于创建阶乘的问题 我能够创建一个只显示结果的阶乘。我这里有语法:如何在Java中创建阶乘及其说明,java,factorial,Java,Factorial,问候互联网上的人们 我是Java的新手。我有一个关于创建阶乘的问题 我能够创建一个只显示结果的阶乘。我这里有语法: import java.util.Scanner; public class DynamicFact { public static void main(String[] args){ Scanner sc = new Scanner(System.in); int anc = 1; double fact = 1; System.out.pri
import java.util.Scanner;
public class DynamicFact {
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int anc = 1;
double fact = 1;
System.out.println("Enter your number : ");
int num = sc.nextInt();
if (num < 0) {
System.out.println("Your number is not valid. Please enter another number.");
} else {
for (anc = 1; anc <= num; anc++) {
fact = fact * anc;
}
System.out.println("Factorial " + num + " is = " + fact );
}
}
}
import java.util.Scanner;
公共类动态行为{
公共静态void main(字符串[]args){
扫描仪sc=新的扫描仪(System.in);
int anc=1;
双重事实=1;
System.out.println(“输入您的号码:”);
int num=sc.nextInt();
if(num<0){
System.out.println(“您的号码无效,请输入另一个号码。”);
}否则{
对于(anc=1;anc使用StringBuilder在运行时构建算术表达式:
} else {
StringBuilder sb = new StringBuilder();
for (anc = 1; anc <= num; anc++) {
if(anc > 1)sb.append(" * ");
sb.append(anc);
fact = fact * anc;
}
sb.append(" = ").append(fact);
System.out.println("Factorial " + num + " is " + sb);
}
}其他{
StringBuilder sb=新的StringBuilder();
对于(anc=1;anc 1)sb.附加(“*”);
某人(非国大);
事实=事实*anc;
}
附加(事实);
System.out.println(“阶乘”+num+“是”+sb);
}
您可以使用的简单解决方案:
String result = "", separator = "";
for (anc = 1; anc <= num; anc++) {
fact = fact * anc;
result = anc + separator + result;
separator = " * ";
}
System.out.println("Factorial " + num + " is " + result + " = " + fact);
字符串结果=”,分隔符=”;
对于(anc=1;ancimport java.util.Scanner;
公开课考试{
公共静态void main(字符串[]args){
扫描仪sc=新的扫描仪(System.in);
int anc=1;
双重事实=1;
StringBuffer结果=新的StringBuffer();
System.out.println(“输入您的号码:”);
int num=sc.nextInt();
if(num<0){
System.out.println(“您的号码无效,请输入另一个号码。”);
}否则{
对于(anc=1;anc提示:查看StringBuilder
(与问题无关)“您的号码无效。请输入其他号码。”-假设您是一个不知道代码的用户。您会问什么?实际上,要从问题中获得准确的输出,您必须从num
向下到1,而不是从1到num
。您可以使用sb.insert(0,
。出于某种原因,Java BOD没有在StringBuilder
@Bathsheba上包含prepend
方法一种可能性,是的。但就我个人而言,我发现遵循输出顺序更符合逻辑。而且这还不如更改for(哇,几乎破坏了练习…)@Bathsheba原因可能是时间复杂度令人震惊。毕竟StringBuilder是基于数组的。
import java.util.Scanner;
public class test {
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int anc = 1;
double fact = 1;
StringBuffer result = new StringBuffer();
System.out.println("Enter your number : ");
int num = sc.nextInt();
if (num < 0) {
System.out.println("Your number is not valid. Please enter another number.");
} else {
for (anc = 1; anc <= num; anc++) {
fact = fact * anc;
result.insert(0,Integer.toString(anc)+"*");
}
System.out.println("Factorial " + num + " is = " + fact );
System.out.println(result.substring(0,result.length()-1));
}
}
}