2012-02-16 9 views
3

このプログラムで静的メソッドを使用する方法がわかりません。私は0から10までの数の階乗を計算するプログラムをコーディングしています。ユーザーは数値を入力することができ、プログラムは階乗を計算する必要があります。 私はもともと主要なコードがすべて入っている関数型プログラムを書いていました。次に、私が静的メソッドで階乗を得るための計算を置くことになっていたことに気付いた代入ルックアップを二重チェックしました。私は自分の問題が私が電卓に送信しない番号を入力するようユーザーに求めているところの底に向かっていると信じています。私はそれがどのように行われているかわからないと思います。私は新しいので、私は貧しいコーディングのために謝罪し、私はどんな助けにも感謝します。あなたは結果を印刷する直前に静的メソッドを使用して

import java.util.Scanner; //import scanner class 
public class FactorialCalculator { 

    public static long calculator(long fact, int num) { 
     for(int i = 1; i<=num; i++) { 
      fact *= i; 
     } 
     return fact; 
    } 

    public static void main(String[] args) { 
     Scanner calc = new Scanner(System.in); //create new scanner calc 
     int num = 0; 
     long fact = 1; 
     //welcome user to the Factorial Calculator 
     System.out.println("Welcome to the Factorial Calculator."); 
     System.out.println(); 
     String choice = "y"; 
     while (choice.equalsIgnoreCase("y")) { 
      System.out.println("Please enter an integer that's greater than 0 and less than 10: "); 
      num = calc.nextInt(); 

      System.out.println("The Factorial for " + num + " is " + fact +"."); 
      System.out.println(); 
      System.out.println("Would you like to continue? y/n"); 
      choice = calc.next(); 
      System.out.println(); 
     } 
    } 
} 
+1

副詞として、階乗を計算するメソッドは、1つの入力パラメータを必要とするだけです。最初のパラメータを取り除き、メソッドで初期化します。 –

+0

@MichaelBurrこれは、 'fact'がループ間でリセットされていないので、実行する必要があります。事実は電卓のメソッド 'long fact = 1;'と 'main()'で宣言しなければならないことに留意してください。 – Hawken

+0

'static'メソッドは同じクラスから別の静的メソッドだけを呼び出すことができます。あなたの 'main'メソッドは静的ですので、' calculator'を呼び出す場合は静的でなければなりません。静的キーワード[here](http://tinyurl.com/76lr6un)または[this](http://tinyurl.com/8yjq7fg)の投稿を参照できます。 –

答えて

0

あなただけの直後

fact = calculator(fact,num); 

でそれを呼び出すcalculator(long fact, int num);

を呼び出すことはありませんしている:私はあなたにも削除をお勧めし

num = calc.nextInt(); 

EDIT への引数としてとcalculator()

例のメソッド本体にそれを追加します。

variableType variableNameに= ClassName.MethodName(:あなたのようにクラスの静的メソッドを呼び出すことができます

public static long calculator(int num){ 
    long fact=1; 
    for(int i = 1; i<=num; i++){ 
     fact *= i; 
    } 
    return fact; 
} 
+1

私の計算は、以前はなかった時にはオフになっています。私の主な方法では、delcare int num = 0;長い事実= 1;私はそれを持っていない場合、私はエラーを得るこれの周りに方法はありますか? –

+0

@JeremyBorton私が作った編集はあなたの問題を解決するはずです – Hawken

+0

これを手伝ってくれてありがとう。 –

1

場所この:ここ

は私のコードです

fact = FactorialCalculator.calculator(fact, num) 
0

クラスを使って、それを直接呼び出すことができますので、あなたのcalculatorメソッドが静的メソッドであるため名。

num = calc.nextInt(); 
long result_factorial = FactorialCalculator.calcuator(fact,num) 

あなたの方法は

public static long (int num) 
     { 
       long fact = 1; 
       for(int i = 1; i<=num; i++) 
       { 
       fact *= i; 
       } 
      return fact; 
     } 

があなたの主なメソッドからfact初期化を削除する必要があります。

+0

を修正しました。 – RanRag

+1

オブジェクトは作成しないでください。静的メソッドです。 – MByD

+0

@BinyaminSharet:あなたがコメントしたときに編集していたばかりだった。 – RanRag

0

パラメーター);

あなたのケースでは、単に呼び出すことができます。

 fact = FactorialCalculator.calculator(fact, num); 

を使用すると、入力numのユーザーをASKときには、どこかの後に挿入されなければならない、とあなたはユーザー

0
import java.util.Scanner; //import scanner class 
public class FactorialCalculator 
{ 

    public static long calculator(int num) 
    { 
      long fact = 1; 

      for(int i = 1; i<=num; i++) 
      { 
       fact *= i; 
      } 
     return fact; 
    } 

    public static void main(String[] args) 
    { 
     Scanner calc = new Scanner(System.in); //create new scanner calc 
     int num; 
     //welcome user to the Factorial Calculator 
     System.out.println("Welcome to the Factorial Calculator."); 
     System.out.println(); 
     String choice = "y"; 
     while (choice.equalsIgnoreCase("y")) 
      { 
      System.out.println("Please enter an integer that's greater than 0 and less than 10: "); 
      num = calc.nextInt(); 

      fact = FactorialCalculator.calculator(num); 

      System.out.println("The Factorial for " + num + " is " + fact +"."); 

      System.out.println(); 
      System.out.println("Would you like to continue? y/n"); 
      choice = calc.next(); 
      System.out.println(); 
      } 
    } 
} 
に実際の番号を印刷する前にこれで
+0

あなたは何を変えているのか説明したいかもしれません。 – Hawken

0

スタート:

fact = FactorialCalculator.calculator(fact, num) 

そして、あなたはプログラムが階乗リグを計算することに気づくはずですhtを初めて使用した場合、2回目以降は失敗します。そのバグを修正することはあなたの仕事です。

関連する問題