2016-10-05 54 views
-3

我遇到了while循環的問題。我被要求編寫一個程序,讓用戶輸入兩個數字,例如1和11.我需要該程序在輸出中顯示1,2,3,4,5,6,7,8,9,10,11標籤,但我無法弄清楚..這是我迄今爲止。雖然循環輸出數字有問題

public partial class Form1 : Form 
{ 
    public Form1() 
    { 
     InitializeComponent(); 
    } 

    private void whileButton_Click(object sender, EventArgs e) 
    { 
     double variableOne = 0; 
     double variableTwo = 0; 
     int i = 0; 

     //Get number 
     if (double.TryParse(variableOneText.Text, out variableOne)) 
     { 
      if (double.TryParse(variableTwoText.Text, out variableTwo)) 
      { 
       while (variableOne <= variableTwo) 
       { 
        i = i + 1; 
        outputLabel.Text = i.ToString(); 
       } 
      } 
      else 
      { 
       MessageBox.Show("Please enter a number"); 
      } 

     } 
     else 
     { 
      MessageBox.Show("Please enter a number"); 
     }  
    } 
} 
+0

_「我需要該程序顯示1-11」_ - 意思是什麼,究竟是什麼?你真的想要的文字'1-11'?你希望每個值都按順序出現嗎?還有別的嗎?你的問題很不清楚。如果你被老師要求寫這篇文章,請考慮向他們尋求幫助,因爲他們能夠給出比我們任何人更好的關於特定主題的建議。如果你想在這裏得到答案,請修正你的問題,以便你準確地解釋你想要程序做什麼。 –

+0

你好。我需要顯示的字面數字1,2,3等。我只是有一些麻煩,找出我需要用來做到這一點的表達。 – user6923913

+0

你還不清楚。你想讓文字閱讀「1,2,3等」嗎?你想讓文本閱讀'1,2,3,4,5,6,7,8,8,10,11'嗎?你想讓文本閱讀'1',然後'2',然後'3',依此類推? **請[編輯您的問題](http://stackoverflow.com/review/suggested-edits/13885385),以便清楚您正在嘗試做什麼,以及您遇到問題解決的具體問題。**準確解釋現在程序做了什麼,並且正如你所希望的那樣解釋。請參閱[問]以獲取更多關於如何以清晰,可回答的方式展示您的問題的信息 –

回答

0

你有沒有改變你的variableOne所以一切的時候,variableOne<variableTwo和而永不斷線。

如果你想使用variableOne削減variableTwo,你可以使用

double temp = variableOne ; 
variableOne = variableTwo ; 
variableTwo = temp ; 

variableOne < variableTwo

0

更改與下面的一個while循環:

var sb = new StringBuilder(); 
while (variableOne <= variableTwo) 
{ 
     sb.Append(string.Concat(variableOne,",")); 
     variableOne  = variableOne + 1; 

} 
outputLabel.Text = sb.ToString().Remove(sb.ToString().Length-1)); 
+0

這有幫助,但它只顯示我的第一個號碼,它沒有顯示所有的介於兩者之間..例如,我在變量1文本框中輸入1,在變量2中輸入4,但它只顯示了4.不是1,2,3,4就像我想 – user6923913

+0

我更新了我的答案。請注意,您的問題最好是在控制檯應用程序中實現。我不確定爲什麼選擇Windows Form應用程序來構建它?無論如何,如果它幫助你,請將它標記爲「答案」。謝謝 – AKR

0

您的代碼因爲它有兩個問題。首先,在首次分配variableOnevariableTwo之後,您永遠不會更改它們的值,因此當您輸入while循環時,它永遠不會結束,因爲variableOne <= variableTwo總是爲真。您需要使用其值會更改的變量才能正確使用循環。

其次,outputLabel.Text = i.ToString();您不是將文本添加到標籤的末尾,而是完全替換它。如果你的循環是功能性的,這會導致你最終結束,而不是「1,2,3,4,...,11」,而只是「11」。

int variableOne; 
int variableTwo; 

if (int.TryParse(variableOneText.Text, out variableOne)) 
{ 
    if (int.TryParse(variableTwoText.Text, out variableTwo)) 
    { 
     StringBuilder sb = new StringBuilder(); 

     for (int i = variableOne; i <= variableTwo; i++) 
     { 
      if (sb.Length > 0) 
       sb.Append(","); 

      sb.Append(i); 
     } 

     outputLabel.Text = sb.ToString(); 
    } 
    else 
    { 
     MessageBox.Show("Please enter a number"); 
    } 
} 
else 
{ 
    MessageBox.Show("Please enter a number"); 
}