我正在做一個猜謎游戲(猜在 1-100 之間)。我需要回答我錯了,但很接近。我有代碼(int diff = Math.Abs(guess - num); if (diff <= 3)
,但我不知道把它放在哪里。
我已經做到了,我有一個正確的數字,以便更容易查看我是否正確完成了我的代碼(并且會在之后更改它)
Console.WriteLine("gissa talet\nDu ska nu gissa ett tal mellan 1 ocn 100, s?
vars?god..\nskriv in ett tal");
int guess = Convert.ToInt32(str);
//gonna make it random between 1-100
int num = (50);
{
//when im right
if (guess == num)
{
Console.WriteLine("r?tt");
}
//when it′s to small guess
else if (guess < num)
Console.WriteLine("f?r lite");
// to large guess
if (guess > num)
Console.WriteLine("f?r stort");
// when i make it random nr and i guess over 100
if (guess > 50)
Console.WriteLine("gissa mellan 1-100");
Console.ReadLine();
}
uj5u.com熱心網友回復:
好吧,代碼看起來有點亂,所以我還提供了如何清理它的建議。還包括建議您可以在哪里檢查密切猜測:)
Console.WriteLine("gissa talet\nDu ska nu gissa ett tal mellan 1 ocn 100, s? vars?god..\nskriv in ett tal");
// User var, let the Visual Studio figure out the type, it looks cleaner :)
// Also you would need to use some sort of input which i don't see here, like
// var str = Console.ReadLine();
var guess = Convert.ToInt32(str);
//gonna make it random between 1-100
// No need for brackets around 50, just var num = 50;
// heads up, just use var num = new Random().Next(1, 100);
var num = 50;
//when im right
if (guess == num)
{
Console.WriteLine("r?tt");
}
// HERE WOULD BE BEST TO CHECK "CLOSE RANGE" GUESS :)
else if (Math.Abs(guess - num) <= 3)
{
// sorry i don't know the language :(
Console.WriteLine("You're very close !!");
}
//when it′s to small guess
else if (guess < num)
{
Console.WriteLine("f?r lite");
}
// to large guess
// This was for some reason 'disconnected' from above if, but should be included in single check
// Also for that you could use switch statement :)
else
{
Console.WriteLine("f?r stort");
}
// when i make it random nr and i guess over 100
// I think condition here was wrong, you compared against 50 for some reason, but we need 100 :)
// I think there you could also check if the guess > 0
if (guess > 100)
{
Console.WriteLine("gissa mellan 1-100");
}
Console.ReadLine();
另一種選擇是在大檢查之后進行“近距離猜測”檢查,if如果猜測更大/更少/相等。
不同之處在于,在這種情況下,兩個檢查都會運行,而不是只運行一個。
uj5u.com熱心網友回復:
如果您有一個if ... else if ... else if ... else構造,則將執行其中一個分支。現在,這并不是你真正擁有的:你有一個if ... else if陳述句,然后是兩個單獨if的 s。所以我會先解決這個問題:
Console.WriteLine("gissa talet");
Console.WriteLine("Du ska nu gissa ett tal mellan 1 ocn 100, s? vars?god..");
Console.WriteLine("skriv in ett tal");
int guess = Convert.ToInt32(str);
//gonna make it random between 1-100
int num = (50);
//when im right
if (guess == num)
{
Console.WriteLine("r?tt");
}
//when it′s to small guess
else if (guess < num)
{
Console.WriteLine("f?r lite");
}
// to large guess
else if (guess > num)
{
Console.WriteLine("f?r stort");
}
// when i make it random nr and i guess over 100
else if (guess > 50)
{
Console.WriteLine("gissa mellan 1-100");
}
Console.ReadLine();
請注意,我還修復了樣式,以便縮進匹配,并且if陳述句的每個分支都有{大括號}。
所以你現在有了 if 陳述句來檢查
- 如果猜測完全正確
- 如果猜測(太多)太小
- 如果猜測(太多)太大
- 如果猜測超過 50
在這個邏輯中,您想在哪里檢查“不完全正確但接近”?
我會給你一個提示:只有一個案例會運行,所以如果你做得太早,“完全”正確的案例將永遠不會運行,如果你做得太晚,“太小/太大”的案例會從不跑。
另外,旁注:您的評論談論 aguess over 100但您的代碼比較guess > 50。如果您在代碼中添加注釋,請確保它們與代碼的功能相匹配,否則您的讀者(包括您未來的自己)會非常困惑兩者中的哪一個是錯誤的!
uj5u.com熱心網友回復:
int diff = Math.Abs(guess - num);
if (guess == num)
Console.WriteLine("r?tt");
else if (diff <= 3) // After 1 check, but before all the others? \
Consoole.WriteLine("msg"); // depends on what exactly you want
else if (guess < num)
Console.WriteLine("f?r lite");
else if (guess > num)
Console.WriteLine("f?r stort");
else if (guess > 100)
Console.WriteLine("gissa mellan 1-100");
uj5u.com熱心網友回復:
你正在尋找else if建筑,像這樣
//gonna make it random between 1-100
int num = (50);
// for : let's restrict the number of attempts
for (int attempt = 1; attempt <= 10; attempt) {
Console.WriteLine("gissa talet\nDu ska nu gissa ett tal mellan 1 ocn 100, s? vars?god..\nskriv in ett tal");
//TODO: better use int.TryParse there
int guess = Convert.ToInt32(Console.ReadLine());
if (guess == num)
Console.WriteLine("r?tt");
else if (Math.Abs(guess - num) <= 3)
Console.WriteLine("you are close"); //TODO: Please, translate it
else if (guess => 1 && guess < num)
Console.WriteLine("too small"); //TODO: Please, translate it
else if (guess <= 100 && guess > num)
Console.WriteLine("too big"); //TODO: Please, translate it
else
Console.WriteLine("gissa mellan 1-100");
}
uj5u.com熱心網友回復:
我希望這能幫到您:
string str = Console.ReadLine();
int guess = Convert.ToInt32(str);
int num = (50);
int diff = guess - num;
if (guess == num)
{
Console.WriteLine("r?tt");
}
else if (guess > 100)
Console.WriteLine("gissa mellan 1-100");
else if (diff <= 3)
Console.WriteLine("");
else if (guess < num)
Console.WriteLine("f?r lite");
else if (guess > num)
Console.WriteLine("f?r stort");
Console.ReadLine();
uj5u.com熱心網友回復:
為了添加答案的替代方案,C#10 現在具有模式匹配,它允許您以不同的方式撰寫它:
const int randomNumber = 50;
Console.WriteLine("Guess the number:");
string guess = Console.ReadLine();
Console.WriteLine(
int.TryParse(guess, out var guessedNumber) switch
{
true => guessedNumber switch
{
(<1) or (>100) => "Please choose a number between 1 and 100",
< randomNumber => "Too small",
> randomNumber => "Too large",
_ => "You guessed correctly"
},
false => "Please enter a valid number"
});
但是,randomNumber它必須是一個常數才能正常作業。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/495279.html
上一篇:如何四舍五入到最接近的0.5
