2015-11-24 48 views
-2

所以我想製作一個程序來顯示素數。用戶輸入兩個數字,開始和結束,程序顯示這兩個輸入之間的所有素數。然後將所有這些素數顯示在名爲labelResult的標籤上。我已經嘗試了控制檯中的代碼並正確顯示了所有結果,但是當我在表單中執行此操作並嘗試將其應用於標籤時,它只顯示最後一個素數。誰能幫忙?提前致謝!C#如何在標籤中顯示循環的所有實例?

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

    private void btnDisplay_Click(object sender, EventArgs e) 
    { 
     int num1, num2; 
     int count1; 

     count1 = Convert.ToInt16(txtStart.Text); 
     num2 = Convert.ToInt16(txtEnd.Text); 

     bool isPrime = true; 

     for (num1 = count1; num1 <= num2; num1++) 
     { 
      for (int j = 2; j <= 150; j++) 
      { 
       if (num1 != j && num1 % j == 0) 
       { 
        isPrime = false; 
        break; 
       } 
      } 

      if (isPrime) 
      { 
       lblResult.Text = Convert.ToString("" + num1 + "" + num1); 
      } 
      isPrime = true; 
     } 
     Console.Read(); 
    } 
} 
} 
+0

也使事情變得更容易,你應該有你爲什麼不使用它添加值列表或ListBox或MultiLined文本框..你也有調試器在您的處置..? – MethodMan

回答

1

您當前的代碼將覆蓋循環的每次迭代中的值。你需要追加到現有的文本來獲得你想要的輸出。此外,而不是每次都分配給標籤,你可能希望先建立自己的數字的字符串,然後分配到標籤,就像這樣:

bool isPrime = true; 
StringBuilder sb = new StringBuilder(); 

    for (num1 = count1; num1 <= num2; num1++) 
    { 
     for (int j = 2; j <= 150; j++) 
     { 
      if (num1 != j && num1 % j == 0) 
      { 
       isPrime = false; 
       break; 
      } 
     } 

     if (isPrime) 
     { 
      sb.Append("" + num1 + "" + num1); 
     } 
     isPrime = true; 
    } 
lblResult.Text = sb.ToString(); 
+0

這樣做。謝謝! –

0

你可以試試這個

在運行時由於循環和isPrime爲真時lblResult將得到更新的值。下一次,意味着下一次循環再次更新值,但會刪除最後一個值。所以在這種情況下,只要說你想保留上一個值+新值。

lblResult.Text = lblResult.Text + Convert.ToString("" + num1 + "" + num1); 
0

具有精確結果的小修正。

int num1, num2; 
     int count1; 

     count1 = Convert.ToInt16(txtStart.Text); 
     num2 = Convert.ToInt16(txtEnd.Text);    
     bool isPrime = true; 
     StringBuilder sb = new StringBuilder(); 

     for (num1 = count1; num1 <= num2; num1++) 
     { 
      for (int j = 2; j <= 150; j++) 
      { 
       if (num1 != j && num1 % j == 0) 
       { 
        isPrime = false; 
        break; 
       } 
      } 

      if (isPrime) 
      { 
       sb.Append("," + num1); 
      } 
      isPrime = true; 
     } 
     lblResult.Text= sb.ToString().TrimStart(','); 
相關問題