首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >三角形数在c#中不显示输出

三角形数在c#中不显示输出
EN

Stack Overflow用户
提问于 2016-05-06 15:26:29
回答 2查看 78关注 0票数 2

我在2013中编写了这段代码。查找大于250的除数是一个简单的问题。我知道这是一个非常常见的问题,其中许多人已经回答了,.but,我在堆栈溢出上使用建议的代码时遇到了问题,但它没有显示输出。就像程序运行一样,但它没有在标签上显示任何内容。有人能帮我知道我做错了什么吗?.here是我的代码:

代码语言:javascript
运行
复制
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();
        }
    }
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-05-06 15:30:55

这里有两个问题:

首先:在“返回”语句下面有不可访问的代码。标签将不会更新。您需要在if和switch语句中放置大括号。就像这样:

代码语言:javascript
运行
复制
if (CountDivisorsOfNumber(number) > 250)
{
    lblnum.Text = number.ToString();
    return number;
}

第二:您希望根据标题显示有超过250个分部的数字,但是:

代码语言:javascript
运行
复制
 if (CountDivisorsOfNumber(number) > 500)

你在查500美元。

编辑:这是我用来测试的代码。我得到了2162160:

代码语言:javascript
运行
复制
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;
                }
            }
        }
    }
票数 1
EN

Stack Overflow用户

发布于 2016-05-06 15:32:21

在标签上设置文本之前执行return语句。返回语句后的任何代码(在同一范围内)都会被忽略。

更改这些行:

代码语言:javascript
运行
复制
    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
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37076118

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档