2013-03-26 23 views
0

對於階乘計算,歐拉數和歐拉功率x計算,我在「階乘」類和「behzat」類下編寫。當我執行程序時;它會爲每個方法返回相同的輸入數字。任何人都可以建議問題是什麼。非常感謝您的協助。Java程序僅返回輸入,未在方法中顯示計算結果

這是階乘類:

public class factorial { 

    public void instructions() 
    { 
     System.out.printf("Enter your choice:\n", 
     " 1 to calculate a factorial value of an integer.\n", 
     " 2 to calculate mathematical constant e.\n", 
     " 3 to calculate e^x.\n", 
     " 4 to end.\n");   
    } // End of instructions 


    // ******* a ******** 

    public double calculateInputValue (int n){ 
    int ans=1; 
    for (int i = 1; i <= n; i++){ 
    ans = ans * i; 
    } 
    return ans; 
    } // end method calculateInputValue 


    // ****** b ******* 
    public double calculate_e_value(double terms) 
    { 
    double e = 1; 

    for(int i = 1; i < terms; i++) 
     e += ((double) 1 /(calculateInputValue(i))); 

    return e; 
    } 


    //********* c ***********  
    public double compute_ex(double terms) // method for e power x 
    { 
    int x = 1; 
    double e = 1; 

    for(int i = 1; i < terms; i++) 
     e += (Math.pow(x,i)/(calculateInputValue(i))); 
     x++; 
    return e; 


    } 

} 

和behzat類包括主:

import java.util.Scanner; // Program uses scanner. 

public class behzat 
{ 


    private static Scanner input; 

public static void main(String[] args) 
    { 


     factorial myfactorial = new factorial(); 
     myfactorial.instructions(); 
     System.out.printf(" ? "); 
     int choice; 
     input = new Scanner(System.in); 
     choice = input.nextInt(); 

     switch(choice) 
     { 
     case 1 :    
      System.out.printf("enter number for factorial calculation"); 
      int number = 1; 
      number = input.nextInt(); 
      myfactorial.calculateInputValue(number); 

      // If integer greater or 0, print "factorial is equal to: %d" 
      if (number >= 0)       
      System.out.printf("Factorial is equal to:%d\n", number); 
      // otherwise, print "Input value not valid." 
      else 
      System.out.printf("Error: Input value not valid.\n"); 
      break; 

     case 2: 

      System.out.printf("enter number of terms to calculate of e constant.\n"); 
      number = input.nextInt(); 
      myfactorial.calculate_e_value(number); 
      System.out.printf(" e value is %2d\n", number); 
      break; 


     case 3: 

      System.out.printf("enter power x value of e constant.\n"); 
      number = input.nextInt(); 
      myfactorial.compute_ex(number); 
      System.out.printf(" e power x is %2d\n", number); 
      break; 

     default: 
      myfactorial.instructions(); 
     } 

    } 

} 
+1

不是關於你的問題,但還是覺得應該說:這是常見的做法是讓班從大寫字母和函數/變量開始,在Java中使用小寫字母。 – 2013-03-26 21:06:34

+0

非常感謝您的關注,Adrian。 – Behzat 2013-03-26 21:18:53

回答

2

你應該檢索每個方法的返回值的變量,然後打印出來。例如:

int val = myfactorial.calculateInputValue(number); 
if (val >= 0)       
System.out.printf("Factorial is equal to:%d\n", val); 

在你調用某個方法並打印檢索到的值的任何地方都適應這種方式。這隻會解決你的問題。

+0

非常感謝Vishal。它現在的作品.. :) – Behzat 2013-03-26 21:17:08

+0

@Behzat我很高興成爲你的幫助:) .. – 2013-03-26 21:18:40

0

至少在你的階乘結果print語句:

if (number >= 0)       
     System.out.printf("Factorial is equal to:%d\n", number); 

您打印輸入number不階乘,這當然總是打印您輸入number的結果。

你要存儲的階乘結果:

long res = myfactorial.calculateInputValue(number); 
if (number >= 0)       
     System.out.printf("Factorial is equal to:%d\n", res); 

假設你的階乘不會導致溢出。 其他兩種情況的類似錯誤。

+0

非常感謝宋。現在它的工作.. :) – Behzat 2013-03-26 21:17:27

+0

@Behzat不客氣。 – taocp 2013-03-26 21:19:11

0

我想你應該有輸入表達你的函數的結果:

例子:

number = input.nextInt(); 
number = myfactorial.calculateInputValue(number); 

// If integer greater or 0, print "factorial is equal to: %d" 
if (number >= 0)       
System.out.printf("Factorial is equal to:%d\n", number); 
+0

非常感謝你..這就是問題,不是它的工作.. :) – Behzat 2013-03-26 21:16:43