为什么我的While循环在我的按钮内爆炸

本文关键字:我的 按钮 While 循环 为什么 | 更新日期: 2023-09-27 18:25:45

我今天决定坐下来,尝试制作一个简单的素数计数器程序,输入两个素数的子素数,然后程序告诉你用来得到乘积的乘数。尽管它似乎崩溃了。经过注释掉代码的消除过程,我得出结论,一定是while循环导致整个程序崩溃。有人知道为什么这可能不起作用吗?

代码:

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 A_Prime
{
    public partial class Form1 : Form
    {
        int multiplier1 = 1;
        int multiplier2 = 1;
        public Form1()
        {
            InitializeComponent();
        }
        private void button1_Click(object sender, EventArgs e)
        {
            while (true)
            {
                int Product = multiplier1 * multiplier2;
                label2.Text = multiplier1 + "x" + multiplier2 + "=" + Product;
                string product = Product.ToString();

                if (product == textBox1.Text)
                {
                    label3.Text = "Your Multipliers Are" + multiplier1 + "x" + multiplier2;

                }
                else
                {
                    multiplier1++;
                    multiplier2++;
                }


            }
        }
    }
}

为什么我的While循环在我的按钮内爆炸

您有一个无限循环。你永远不会突破你的while循环,你需要一个break语句。看看你的代码,看起来一旦你找到了乘数并设置了label3.Text值,你就完成了,应该会跳出循环。

private void button1_Click(object sender, EventArgs e)
     {
         while (true)
         {
            int Product = multiplier1 * multiplier2;
            label2.Text = multiplier1 + "x" + multiplier2 + "=" + Product;
            string product = Product.ToString();    
            if (product == textBox1.Text)
            {
                label3.Text = "Your Multipliers Are" + multiplier1 + "x" + multiplier2;
                break;
            }
            else
            {
                multiplier1++;
                multiplier2++;
            }    
        }
    }

while循环中没有退出策略或条件。将任何退出条件与关键字一起引入

if(exit_condition)
   break;

while循环执行其余代码的条件始终为true。正如我所看到的,你的代码中没有任何部分可以改变bool值,所以你有一个无限循环。。。尝试更改while循环条件。

你的循环中没有中断,你只得到具有自然数平方根的数字,因为你在循环中只计算n^2