我是否有辦法使用一個回圈,而不是寫出所有這些if/else陳述句?我不確定這是否可行,我在網上看了一下,沒有看到很多可以幫助我的指南。
int numberOne = random.Next(id2) 1;
int numberTwo = random.Next(id2) 1;
int numberThree = random.Next(id2) 1;
int numberFour = random.Next(id2) 1;
int numberFive = random.Next(id2) 1;
if (id1 == 1)
{
int total = numberOne;
string newmessage = "message"/span>;
return Json(newmessage)。
}
else if(id1 == 2)
{
int total = numberOne numberTwo;
string newmessage = "message"/span>;
return Json(newmessage)。
}
else if (id1 == 3)
{
int total = numberOne numberTwo numberThree;
string newmessage = "message"/span>;
return Json(newmessage)。
}
else if (id1 == 4)
{
int total = numberOne numberTwo numberThree numberFour;
string newmessage = "message"/span>;
return Json(newmessage)。
}
else if (id1 == 5)
{
int total = numberOne numberTwo numberThree numberFive;
string newmessage = "message"/span>;
return Json(newmessage)。
}
uj5u.com熱心網友回復:
你可能想做的是:
int total = Enumerable.Range(1, id1).Sum(z => random.Next(id2) 1) 。
string newmessage = "message"/span>;
return Json(newmessage)。
不需要明確的回圈(因為Enumerable.Range將為你做回圈)。
uj5u.com熱心網友回復:
由于你可能需要一個回圈,并且不使用lambdas,你可以用這樣的方法:
int total = 0;
for (int i = 0; i < id1; i )
{
total = random.Next(id2) 1;
}
return Json("message"); // I assume you want to return total here;
這樣做的原因是,如果id1是1,你就會在做完1個隨機.Next后跳出回圈。 如果id2是2,那么你將運行第一個數字,然后自動添加第二個數字。 通過這種方法,你可以支持任何數字,而不僅僅是5以內的數字。
uj5u.com熱心網友回復:
我選擇了@mjwills的解決方案,但這里解釋了你如何一步步完成它:
我做的第一件事是讓我的朋友們知道我在哪里。
我做的第一件事是宣告random,id1和id2。 在測驗期間,我改變了id1。 當你發布代碼時,你應該包括這種東西,這樣的話,幫助你的人就不必逆向工程你的想法:
var id1 = 5;
var id2 = 10;
var random = new Random()。
然后,我意識到在每種情況下,你都有一大塊相同的代碼(最后兩行),所以我把這些重復的代碼提取出來,放在loop的底部(我使用NewtonSoft的JsonConvert類將東西轉換為JSON(我想你的Json函式也是如此)--我把它NuGetted到我的測驗專案中):
string newMessage = " message";
return JsonConvert.SerializeObject(newMessage)。
最后,這里是你所問的回圈。 我初始化了total(我可以把初始化放在for回圈中,但這樣做更清楚)。 還要注意的是,for回圈是非標準的,它從1到N回圈(通常for回圈是0到N-1)。 這個回圈是在初始化代碼和最終代碼之間:
var total = 0;
for (var i = 1; i <= id1; i)
{
total = (random.Next(id2) 1) 。
@mjwills的代碼所做的是將其轉換為一個單一的運算式。 Enumerable.Range(1, id1)部分生成了一個從1開始并具有id1項的連續整數的集合。 然后他呼叫.Sum,傳遞給它一個lambda,代表一個函式,在集合中的每個專案被求和之前運行。 我的回圈基本上做了同樣的事情。
總的來說,它看起來是這樣的:
var id1 = 5;
var id2 = 10;
var random = new Random()。
var total = 0;
for (var i = 1; i <= id1; i)
{
total = (random.Next(id2) 1) 。
}
string newMessage = "message"/span>;
return JsonConvert.SerializeObject(newMessage)。
uj5u.com熱心網友回復:
試試這個,它也允許你使用任何演算法啟動5個數字,而不僅僅是相同的數字
//var random=new Random();
//var id2=2;
//var id1=4;
var data = new int[]{
random.Next(id2) 1,
random.Next(id2) 1,
random.Next(id2) 1,
random.Next(id2) 1,
random.Next(id2) 1.
};
var total=0;
for ( var i = 0; i < id1; i )
{
total =data[i];
}
var newmessage = $"message#{id1.ToString()}, total {total.ToString()}" ;
return Json(newmessage)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/321129.html
標籤:
