2011-10-29 9 views
0

これはjavaの階乗的なプログラムです。エラーが発生した場合は教えてください。ありがとう!シンプルなJavaエラー

class Fact { 
    public static void main(String[] args) { 

     int i=5,num=1; 

     while(i>1) { 
     num=num*i; 
     } 
     i--; 

     System.out.println("Value: " + num);  
    } 
} 
+1

負の値のチェックを追加します。 whileループの内側に移動します。現在、無限ループに入っています。 –

+1

コードブロックをインデントする論理的で一貫性のある方法を使用すると、読者はプログラムの流れを理解するのに役立ちます。そのコードは、**論理的な**インデントを使用します。 –

答えて

4

それの内側ことになっているときは、whileループの変数i外側を減らします。

while(i>1) 
    { 
    num=num*i; 
    } 
    i--; 

は次のようになります。あなたの現在のコードがwhile *i* is greater than 1 do your multiplicationということであると言う何

while(i>1) 
    { 
    num=num*i; 
    i--; 
    } 

。問題は、iは、決してそれを引き算しないので、常に1より大きいということです。ループ内のi

+0

ああ...私は混乱していた...それは働いた!! – Webroots

0
  1. 使用の減少幅は
  2. あなたは、whileループの外 `i`をデクリメントしている(あなたはまた、0値を処理する必要があります)
+0

あなたの2番目のポイントについて:それは何回繰り返したいと思うのでしょうか?彼はそれが4,5回あるかどうかわからないと指定していないので) – Marcus

+0

事実(-2)、事実(0)などのようにスムースを処理する必要があることを意味します。 – mishadoff

+0

実生活で使用される方法があれば真ですが、これはメインメソッド:)しかし、良い点 – Marcus

関連する問題