2016-05-06 53 views
2

我已經在visual studio studio 2013中編寫了這個代碼。它是一個簡單的問題,用除數超過250找到數字。我知道它是一個非常常見的問題,其中許多已經回答。但我有一個問題,我使用堆棧溢出建議的代碼,但它不顯示輸出。就像程序運行一樣,但它不會在標籤上顯示任何內容。任何人都可以請幫我知道什麼是我做錯了。這裏是我的代碼:c#中的三角形數字不顯示輸出#

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using System.Windows.Forms; 

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

     public int Find() 
     { 
      int number = 0; 
      for (int i = 1; ; i++) 
      { 
       number += i; // number is triangle number i 
       if (CountDivisorsOfNumber(number) > 500) 
        return number; 
        lblnum.Text = number.ToString(); 
      } 
     } 


     private static int CountDivisorsOfNumber(int number) 
     { 
      int count = 0; 
      int end = (int)Math.Sqrt(number); 
      for (int i = 1; i < end; i++) 
      { 
       if (number % i == 0) 
        count += 2; 
      } 
      if (end * end == number) // Perfect square 
       count++; 
      return count; 
     } 
     private void Form1_Load(object sender, EventArgs e) 
     { 
      Find(); 
     } 
    } 
} 
+1

好像是因爲你對'if'聲明早日迴歸,標籤文字顯示的下一個到最後一個數字 – Jonesopolis

回答

1

有兩個問題在這裏:

第一:你有你的下面「return」語句無法訪問的代碼。標籤不會被更新。你需要在你的if和switch語句中加上大括號。像這樣:

if (CountDivisorsOfNumber(number) > 250) 
{ 
    lblnum.Text = number.ToString(); 
    return number; 
} 

二:你要根據你的標題與超過250個師顯示數字,但:

if (CountDivisorsOfNumber(number) > 500) 

你檢查500

編輯:這裏的我用來測試的代碼。我得到了2162160:

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

     private void Form1_Load(object sender, EventArgs e) 
     { 
      Find(); 
     } 

     private int CountDivisorsOfNumber(int number) 
     { 
      int count = 0; 
      int end = (int)Math.Sqrt(number); 
      for (int i = 1; i < end; i++) 
      { 
       if (number % i == 0) 
        count += 2; 
      } 
      if (end * end == number) // Perfect square 
       count++; 
      return count; 
     } 

     private int Find() 
     { 
      int number = 0; 
      for (int i = 1; ; i++) 
      { 
       number += i; // number is triangle number i 
       if (CountDivisorsOfNumber(number) > 250) 
       { 
        lblnum.Text = number.ToString(); 
        return number; 
       } 
      } 
     } 
    } 
+0

我這樣做既是必要的變化,但仍然沒有工作 –

+0

我已經做了必要的更改,但它仍然不起作用 –

+0

@MohammedSayer我剛剛嘗試過這些更改,他們工作。你想讓我粘貼代碼嗎?我做了一個快速控制檯應用程序 – Gaspa79

0

您的return語句在標籤上設置文本之前執行。返回語句之後的任何代碼(在同一範圍內)都會被忽略。

更改這些行:

public int Find() 
    { 
     int number = 0; 
     for (int i = 1; ; i++) 
     { 
      number += i; // number is triangle number i 
      if (CountDivisorsOfNumber(number) > 500){ 
      { 
       lblnum.Text = number.ToString(); 
       return number; 
      } 
     } 
    } 
+0

@Damieh是的,如果你可以請和它的窗戶形式applcation –