Java 使用for循环计算序列
我想写一个程序,读取一个整数,然后打印以下序列的和Java 使用for循环计算序列,java,Java,我想写一个程序,读取一个整数,然后打印以下序列的和 1/1! + 1/2! + 1/3!+..........1/number! . 我应该只使用for循环,而不使用数学方法。 这是我的代码,它运行良好,但我的问题是,如何打印序列,然后打印答案 例如,如果x=3,则应打印1/1+1/2+1/6=1.666667 像这样: Scanner input= new Scanner(System.in); int x= input.nextInt(); double product=1,sum=0;
1/1! + 1/2! + 1/3!+..........1/number! .
我应该只使用for循环,而不使用数学方法。
这是我的代码,它运行良好,但我的问题是,如何打印序列,然后打印答案
例如,如果x=3,则应打印1/1+1/2+1/6=1.666667
像这样:
Scanner input= new Scanner(System.in);
int x= input.nextInt();
double product=1,sum=0;
for(int i=1;i<=x;i++)
{
product*=i;
sum+=1.0/product;
System.out.print("1/" + product);
if(i == x){
System.out.print(" = " + sum);
}
else {
System.out.print(" + ");
}
}
如果您不希望分母有小数点,那么将乘积变量设为long而不是double
当然,你所写的对小数字有效,但阶乘增长非常快,分数也是如此,因此,如果您希望浮点数的精度尽可能精确,最好使用BigDecimal类来表示分数,而不是使用double。试试下面的代码,可能会对您有所帮助
public static void main(String[] args) {
Scanner input= new Scanner(System.in);
int x= input.nextInt();
double product=1,sum=0;
for(int i=1;i<=x;i++)
{
product*=i;
sum+=1.0/product;
System.out.print(""+i+"/"+(int)product+"+");
}
System.out.print("="+sum);
}
你可以试试这个:-
import java.util.*;
class Number
{
int fact(int n){
int p=1;
for(int i=1;i<=n;i++){
p*=i;
}
return p;
}
public static void main(String args[]){
Scanner sc=new Scanner(System.in);
Number num=new Number();
int number;
System.out.println("Enter the limit:-");
number=sc.nextInt();
double sum=0;
for(int lo=1;lo<=number;lo++){
sum+=(double)lo/(double)(num.fact(lo));
}
System.out.println("The sum is:- "+sum);
}
}
您可以在每次迭代时打印字符串1/product+,最后一次迭代只需做一点小改动。是否对最终数字的小数位数有严格限制?你的问题指定了6,但这是一个硬限制,还是仅仅是你在问题中写的数字?@sara chatila在得到答案后,请不要删除这个问题。
public static void main(String[] args) {
Scanner input= new Scanner(System.in);
int x= input.nextInt();
double product=1,sum=0;
for(int i=1;i<=x;i++)
{
product*=i;
sum+=1.0/product;
System.out.print(""+i+"/"+(int)product+"+");
}
System.out.print("="+sum);
}
1/1+2/2+3/6+=1.6666666666666667
import java.util.*;
class Number
{
int fact(int n){
int p=1;
for(int i=1;i<=n;i++){
p*=i;
}
return p;
}
public static void main(String args[]){
Scanner sc=new Scanner(System.in);
Number num=new Number();
int number;
System.out.println("Enter the limit:-");
number=sc.nextInt();
double sum=0;
for(int lo=1;lo<=number;lo++){
sum+=(double)lo/(double)(num.fact(lo));
}
System.out.println("The sum is:- "+sum);
}
}