2013-07-31 54 views
0
private void button1_Click(object sender, EventArgs e) 
{ 
     String UserNumber = this.textBox1.Text; 
     int NewUserNumber = Convert.ToInt32(UserNumber); 
     int result = 0; 
     int second = 0; 

     while (NewUserNumber >= 1) 
     { 

      result = NewUserNumber * (NewUserNumber - 1); 
      NewUserNumber--; 
     } 
     String i = Convert.ToString(result); 
     this.textBox2.Text = i; 
    } 
} 

雖然我明白這是我的作業,但我被卡住了。我真的不希望這個解決,我想自己做。c#SIMPLE析因程序

我不明白爲什麼它不工作..它不管我把輸出2。

我可以在Java中做到這一點很容易,但轉換到達我..

任何幫助會很好。

+0

因爲你覆蓋的內容'result'各一次。 – Corak

+0

它只是因爲你是初始化結果與0 ,,,初始化它爲1作爲int結果= 1。 並且您每次都覆蓋結果的值。計算結果爲Result = result *(number-1) – Akshay

回答

7

您的問題不在轉換中。請

result = NewUserNumber * (NewUserNumber - 1); 
+2

doh!謝謝!!!!! – user2514595

0

初始化結果看起來

int Result=1; 

和寫入循環如下

while (NewUserNumber >= 1) 
{ 
    result = result * NewUserNumber; 
    NewUserNumber--; 
} 

OR

你甚至可以用follwing

public int Factorial(int num) 
{ 
    if(num==1) 
    return 1; 
    return num * Factorial(num-1); 
} 
+2

OP不想要一個解決方案,他想知道,他的解決方案爲什麼不起作用。 – Corak

+0

Corak說什麼..此外,你不會發起1. – Sayse

+0

謝謝....仍然有點困惑..不會導致然後=一個更大的數字,因爲你將最終結果存儲在它和然後用另一個數字來表示它? (5的例子就是我在想..) – user2514595

0

你需要看看你的while循環結構,以及你如何設置外它的結果值和乘法

while (NewUserNumber >= 1) 
    { 

     result = NewUserNumber * (NewUserNumber - 1); 
     NewUserNumber--; 
    } 
    String i = Convert.ToString(result); 

你也有聲明的另一個int second = 0; - 不明白你爲什麼要宣佈。

0

我的建議是嘗試使用不同的輸入手動運行代碼。

您應該運行循環並嘗試計算結果的值,NewUserNumber在每次迭代中都是如此。

好運...

0

你應該嘗試運行您的代碼調試器,然後通過使用監視窗口步驟。這很容易做到,並會準確地告訴你每個數值在每個點上的值(你設定的斷點)。你在用什麼IDE?

1
  while (NewUserNumber > 1) 
      { 
       result = result * NewUserNumber; 
       NewUserNumber--; 
      } 
0

INT階乘(INT輸入) { INT答案= 0;

if (input > 0) 
{ 
    count = 1; 
    while (count <= input) 
    { 
     if (count == 1) 
     { 
      answer= 1; 
      count++; 
     } 
     else 
     { 
      answer = count * answer; 
      count++; 
     } 
    } 
} 
else 
{ 
    MessageBox.Show("Please enter only a positive integer."); 
} 

return answer; 

}

0
static void Main(string[] args) 
    { 
     int number, fact; 
     Console.WriteLine("enter the number for geting factorial"); 
     number = Convert.ToInt32(Console.ReadLine()); 
     fact = number; 
     for (int i = fact - 1; i > 0; i--) 
     { 
      fact = fact * i; 
     } 
     Console.WriteLine(fact); 
     Console.ReadLine(); 
    } 
+0

你有沒有看到'我真的不想要這個解決方案,我想自己做。'和接受的答案? – bummi