2017-08-01 41 views
0

無法計算好邏輯,我需要增加計數器的值直到條件滿足。但它說,該計劃是無所事事這裏增加變量值,直到條件滿足爲止C#

int num; 
int ctr = 3; 
reqID = browser.Div(Find.ByClass("gwt-Label WNII") && Find.ByIndex(ctr)).OuterText; 
bool isNumeric = int.TryParse(reqID, out num); 
bool isTR = reqID.Contains("T_R_"); 

do { ctr++; } 
while (isTR == true || isNumeric == true); 
{ 
    reqID = browser.Div(Find.ByClass("gwt-Label WNII") && Find.ByIndex(ctr)).OuterText; 
} 

解析這個頁面

https://hpe.wd5.myworkdayjobs.com/en-US/Jobsathpe/job/CBC01---Aruba-Cork-CBC01/Pricing-Specialist_1006905-3

https://hpe.wd5.myworkdayjobs.com/en-US/Jobsathpe/job/RYA01---Riyadh-Al-Faisaliah-Tower-RYA01/Portfolio-Sales-Specialist_1006892-1

看它有多少的 「GWT標籤WNII」 類迭代有

+1

是否有一個特定的原因,你爲什麼不能用簡單的for循環切換'do while'? – Cataklysim

+0

因爲增量值是動態的,所以沒有明確的計數,因爲每個項目有不同的計數器。 – Gorhell

+0

您不會更改循環內的任何條件變量。所以,循環將永遠不會開始或永遠不會結束。 –

回答

0

您不會更改循環內的任何條件變量。因此,循環要麼永遠不會啓動或寫不完

您可能想訂購這樣的:

int num; 
int ctr = 3; 

bool isTR = false; 
bool IsNumeric = false; 

do 
{ 
    reqID = browser.Div(Find.ByClass("gwt-Label WNII") && Find.ByIndex(ctr)).OuterText; 
    if(reqID != null) 
    { 
     isNumeric = int.TryParse(reqID, out num); 
     isTR = reqID.Contains("T_R_"); 
    } 
    ctr++; 
} 
while (!isTR && !isNumeric); 

do參考:https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/do

+0

修復你給的代碼讓我試試 – Gorhell

+0

對不起,現在就試試吧。與剪切和粘貼快速! –

+0

給我沒有設置對象實例的對象引用。在包含isTR – Gorhell

1

聲明你的布爾你之外,同時背景和修改裏面:

int num; 
int ctr = 3; 
bool isNumeric = true; 
bool isTR = true; 

do 
{ 
    reqID = browser.Div(Find.ByClass("gwt-Label WNII") && 
    Find.ByIndex(ctr)).OuterText; 
    isNumeric = int.TryParse(reqID, out num); 
    isTR = reqID.Contains("T_R_"); 
    ctr++; 
} 
while (isTR == true || isNumeric == true); 
+0

它給我錯誤布爾isTR「對象引用未設置爲對象的實例」 – Gorhell

+0

我的不好,我糾正它。現在應該可以。 – JBO