我一直盯着这几个小时,我似乎无法弄清楚为什么我的输出太小了。我的输出做你期望的,平衡,他们只是平衡到错误的值。我非常肯定错误在于我的main方法的while循环,或嵌套的for循环,但我会继续发布所有内容,因为它隐藏在其他地方。
这个程序的目的是通过求和1 + x + x ^ 2/2来估计e ^ x的值! + x ^ 3/3! + ... + x ^ n / n!。它需要输出n取的总和为1到10之间的每个值,以及50和100的值。所以12输出全部在一起。
import java.io.*;
import java.text.DecimalFormat;
public class Ch3Ex7
{
static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
static double x = 0;
static DecimalFormat df = new DecimalFormat("0.00");
public static void main (String[] args)
{
mainMenu();
int counter = 1;
double heldx = x;
double holderx = 0;
double denom = 1;
double printx = 0;
double f = 1;
while (counter != 100)
{
x = x*heldx;
denom++;
for(int i = 2; i<=denom; i++)
{
f = f*i;
}
holderx = holderx + x/f;
if ((counter > 0 && counter <= 10) || (counter == 50))
{
printx = 1 + heldx + holderx;
System.out.println(df.format(printx));
}
counter++;
}
System.out.println(df.format(printx));
f = 0;
x = 0;
counter = 1;
denom = 1;
callMain();
}
public static void mainMenu()
{
try
{
System.out.println("Requesting user input, press 0 to leave");
x = Integer.parseInt(br.readLine());
space();
if (x == 0)
{
System.exit(0);
}
}
catch(IOException ioe) {}
}
public static void callMain()
{
String[] x = {"A" , "B"};
Ch3Ex7.main(x);
}
public static void space()
{
System.out.println();
}
}
答案 0 :(得分:4)
问题在于你的“f”变量。您每次都在尝试计算该值,但最终会以旧值开始。
摆脱for循环并在其位置添加f *= denom;
。