我有一個固定的 int 值 - 1050。我有大約 50 個動態值要與固定值進行比較。所以我在for回圈中比較它。我有一個公共變數,我根據結果將其設定為 ok 或 notok。但我的問題是公共變數的值始終是我比較的最后一個值。例如,如果我將第 20 個動態值設為 1000,它應該回傳 notok,但變數的值始終是最后一個比較值。即使動態變數的一個/多個值與固定變數不匹配,如何將變數設定為 notok?我還在串列框中顯示了 notok 值的總數。
這是我所擁有的:
string result;
for(int i = 0; i < dynamicvalue.count; i )
{
if(dynamicvalue[i] != setvalue)
{
result = "notok";
listBox1.Items.Add(result);
}
else
{
result = "ok";
}
}
uj5u.com熱心網友回復:
"notok"如果至少有一個不匹配,請使用純代碼的一種方法:
string result = "ok";
for(int i=0; i<dynamicvalue.count; i)
{
if(dynamicvalue[i] != setvalue)
{
result = "notok";
break;
}
}
uj5u.com熱心網友回復:
您可以.Any()從 Linq 使用,
確定序列的任何元素是否存在或是否滿足條件。
string result = dynamicvalue.Any(x => x == setValue) ? "Ok" : "Not Ok";
如果你想在for沒有陳述句的情況下使用回圈break,你只是增加了代碼的時間復雜度。
我永遠不會推薦它,但如果你愿意,你可以試試下面的代碼
string result = "Ok";
bool flag = true;
//This for loop will iterate for n times.
for(int i = 0; i < dynamicvalue.Count; i )
{
if(dynamicvalue[i] != setvalue && flag)
{
result = "Not Ok";
flag = false; //flag will help us to execute this block of code only once.
}
}
uj5u.com熱心網友回復:
也許回答這個問題的最有效方法是將您的數字保留在 HashSet 中(制作dynamicvaluea HashSet<int>),然后是:
dynamicvalue.Contains(setvalue) ? "ok" : "notok"
HashSet 可以更快地回答“你包含這個值嗎?” 比串列/陣列可以
uj5u.com熱心網友回復:
通過評論中正在進行的討論,我認為您想要檢查 dynamicvalue 中的所有元素并檢查所有元素是否正常。如果是這種情況,您應該將結果轉換為陣列。您會得到最后一個比較結果,因為每次回圈回圈時,字串都會重新分配一個新值,因此前一個值會被丟棄。
這是你想做的嗎?我用c 寫的
int setvalue = 1050;
int notok = 0;
int dynamicvalue[5] = {1, 2, 3, 1050, 4}; //for example
string result[5];
for (int i = 0; i < sizeof(dynamicvalue); i ){
if (dynamicvalue[i] != setvalue){
result[i] = "notok";
notok ; //to keep track of notok
}
else{
result[i] = "ok";
}
}
之后,如果您回圈瀏覽結果陣列,您將看到所有值都已保存。我發現有一個 int 變數可以更簡單地知道結果有多少次沒有被確認
uj5u.com熱心網友回復:
你忘了得到實際值dynamicvalue:你的測驗應該是if (dynamicvalue[i] != setvalue)。
編輯:并break;在指令之后添加一個result="ok";來打破回圈。
編輯 2: 上面的答案使用break.
uj5u.com熱心網友回復:
我通過閱讀@deminalla 的回答找到了解決方案。
我又添加了兩個整數作為計數器,在 for 回圈之后,我比較了這些整數的值以獲得最終結果。
這是我所做的:
string result;
int okcounter = 0;
int notokcounter = 0;
for(int i = 0; i < dynamicvalue.count; i )
{
if(dynamicvalue[i] != setvalue)
{
notokcounter ;
listBox1.Items.Add(notokcounter);
}
else
{
okcounter ;;
}
}
if(notokcounter >=1)
{
result = "notok";
}
else if(okcounter == dynamicvalue.count)
{
result = "ok";
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/447414.html
