2015-11-24 51 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(','); 
相关问题