2014-02-28 1 views
1

나는 몇 시간 동안 이것을보고 있었으므로 출력이 너무 작게 나오는 이유를 알 수 없었습니다. 제 출력물은 기대했던 것, 평평하지 않은 것, 잘못된 값으로 벗어났습니다. 오류가 내 주요 메서드 또는 중첩 된 for 루프의 while 루프 내에 있음을 확신하지만, 다른 곳에 숨어있는 모든 내용을 게시 할 것입니다.루프를 사용하여 e^x을 추정하려고 시도했습니다.

이 프로그램의 목적은 1 + x + x^2/2를 합하여 e^x의 값을 추정하는 것입니다! + x^3/3! + ... + x^n/n! 50과 100의 값과 함께 1과 10 사이의 각 값으로 n 테이크의 합계를 출력해야합니다. 따라서 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

모든 입력 값이 잘못 되었습니까? 가까이 있니? 우리가 당신의 프로그램을 컴파일하고 시도하도록 강요하는 것이 아니라, 몇 가지 값의 결과를 보여줄 수 있습니까? – Daniel

답변

4

"f"변수에 문제가 있습니다. 매번 값을 계산하려고하지만 이전 값으로 시작하면됩니다.

for 루프를 없애고 그 자리에 f *= denom;을 추가하십시오.

+1

나는 denom ++ 후에 필요하다고 생각합니다. –

+0

아, 네가 틀렸다 @ 테드 브리검 – Daniel

관련 문제