执行while循环只生成一次pin

时间:2017-10-04 08:00:28

标签: c#

我想只执行while循环一次以生成引脚。现在,每当我点击一个按钮时,while循环每次都会生成新的引脚。我只想要一个针脚。 这是我的代码

Guid PinGuid;

byte[] Arr;
UInt32 PINnum = 0;
while(PINnum.ToString().Length != 4)
{
    PinGuid = Guid.NewGuid();
    Arr = PinGuid.ToByteArray();
    PINnum = BitConverter.ToUInt32(Arr, 0);

}
textBox4.Text += PINnum.ToString();

更新:

我找到了解决方案。

string x = "";
Guid PinGuid;
byte[] Arr;
UInt32 PINnum = 0;
while(PINnum.ToString().Length != 4)
{
    PinGuid = Guid.NewGuid();
    Arr = PinGuid.ToByteArray();
    PINnum = BitConverter.ToUInt32(Arr, 0);

}
x = PINnum.ToString();

返回x;

2 个答案:

答案 0 :(得分:0)

看到上下文,我认为你应该使用if语句而不是while循环。

只需将SELECT a.a_id, a.a_name, b.b_area FROM C JOIN A ON a.a_id = c.a_id JOIN B ON b.b_id = c.c_id JOIN D ON d.employee_id = c.employee_id WHERE d.salary = (SELECT max(salary) FROM D) 更改为while,看看它是如何运作的。

编辑:实际上,我认为你想在循环期间为PINnum添加一个数字,但是PINnum会不断变化,而不会增加额外的数字。因此,长度将保持为1.我认为在添加新的Pinnum之前将当前值更改为字符串可能最终会有所帮助。

if更改为!=也可能更好,这样,while循环可以正常运行,无需进行任何更改即可继续超过4。

答案 1 :(得分:0)

查看您的代码,您似乎正在尝试生成一个4位数的PIN。

但是你不能在开始时在textbox4中说明什么,所以不确定你的= 4是多么有效(而(PINnum.ToString()。长度!= 4&& textBox4.TextLength == 4 ))。

还有一些其他问题......

因此,如果您正在寻找一个4位数的Pin发生器,请尝试Unique 4 digit random number in c#