2017-10-04 36 views
-4

我想執行while循環只產生一次引腳。現在,每當我點擊一個按鈕時,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(); 

UPDATE:

我找到了解決辦法。

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(); 

return x;

+2

'如果(!hasDoneBefore){/ *做* /; hasDoneBefore = true}'? –

+3

當你只想執行一次代碼時,爲什麼要使用循環呢? – HimBromBeere

+0

您正在初始化PINnum = 0;一次又一次。你可以讓它成爲一個單身人士,並分配一次。如果它有價值,它不會生成。 – Amit

回答

0

看到上下文,我認爲你應該使用if語句而不是while循環。

只需將while更改爲if並查看它是如何工作的。

編輯:其實,我想你想在循環期間向PINnum添加一個數字,但是PINnum會不斷變化,而不會增加額外的數字。所以長度將保持在1.我認爲在添加新的Pinnum之前將Pinnum的當前價值改爲一個字符串可能最終有所幫助。

這也可能是更好的改變!=<,這樣while循環將正常工作,沒有可能發生的變化,繼續過去4

+1

如果在相同條件下while變爲if,則if內部的代碼不再運行,因爲PINum等於0 ... – fnascimento

0

看你的代碼,你似乎試圖生成一個4位數字的PIN。

但是你不說什麼在開始textbox4,所以不知道你= 4如何有效的(而(PINnum.ToString()。長度!= 4 & & textBox4.TextLength == 4))。

還有一些其他的問題......

所以,如果你正在尋找一個4四位數Pin發電機然後嘗試在這裏Unique 4 digit random number in c#