我在2013中编写了这段代码。查找大于250的除数是一个简单的问题。我知道这是一个非常常见的问题,其中许多人已经回答了,.but,我在堆栈溢出上使用建议的代码时遇到了问题,但它没有显示输出。就像程序运行一样,但它没有在标签上显示任何内容。有人能帮我知道我做错了什么吗?.here是我的代码:
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();
}
}
}发布于 2016-05-06 15:30:55
这里有两个问题:
首先:在“返回”语句下面有不可访问的代码。标签将不会更新。您需要在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;
}
}
}
}发布于 2016-05-06 15:32:21
在标签上设置文本之前执行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;
}
}
}https://stackoverflow.com/questions/37076118
复制相似问题