[英]not all code paths return a value ' '
我正在嘗試制作一個簡單的shot彈槍游戲,在該游戲中,用戶與CPU以及兩者都可以射擊,屏蔽或重新加載,但是在我的GetOptionFromUser中,我不斷收到錯誤消息“ ShotgunGame.Program.GetOptionFromUser()”:並非所有代碼路徑都返回值
任何指導將不勝感激這是我的方法
enum ShotgunOption
{
Shoot = 1,
Reload = 2,
Shield = 3,
}
static void DisplayMenu()
{
Console.WriteLine("Please pick an item:");
Console.WriteLine("S - Shoot");
Console.WriteLine("P - Shield");
Console.WriteLine("R - Reload");
//Console.WriteLine("X - Exit");
}
static ShotgunOption GetOptionFromUser()
{
char menuItem;
DisplayMenu();
menuItem = char.ToUpper(char.Parse(Console.ReadLine()));
if (menuItem == 'S')
{
return ShotgunOption.Shoot;
}
else if (menuItem == 'P')
{
return ShotgunOption.Shield;
}
else if (menuItem == 'R')
{
return ShotgunOption.Reload;
}
while (menuItem != 'S' && menuItem != 'P' && menuItem != 'R')
{
Console.WriteLine("Error - Invalid menu item");
DisplayMenu();
menuItem = char.ToUpper(char.Parse(Console.ReadLine()));
}
}
static void DisplayResults(ShotgunOption UserOption,ShotgunOption CPUOption, int UserScore, int UserBullets, int CPUBullets)
{
Console.Clear();
Console.WriteLine("Giving up?");
Console.WriteLine("You Chose {0}, The Computer Chose{1} Your Score is {3} . You had {4} Bullet(s). The CPU had {5} bullets(s).", UserOption, CPUOption, UserScore, UserBullets, CPUBullets);
Console.WriteLine("Thanks for playing!");
Console.ReadKey();
}
您有一系列的if
else if
返回結果。 但是你有
while (menuItem != 'S' && menuItem != 'P' &&
menuItem != 'R')
...
沒有返回語句。 您需要在方法末尾以及if
的末尾返回。
您嘗試做的事情和您的代碼所做的事情相差一點。 這樣的事情將更好地為您服務:
static ShotgunOption GetOptionFromUser()
{
char menuItem = null;
DisplayMenu();
var menuItem = char.ToUpper(char.Parse(Console.ReadLine()));
while (menuItem != 'S' && menuItem != 'P' && menuItem != 'R')
{
Console.WriteLine("Error - Invalid menu item");
DisplayMenu();
menuItem = char.ToUpper(char.Parse(Console.ReadLine()));
}
if (menuItem == 'S')
{
return ShotgunOption.Shoot;
}
else if (menuItem == 'P')
{
return ShotgunOption.Shield;
}
return ShotgunOption.Reload;
}
這樣,代碼將循環直到其具有有效值為止,然后在退出循環后處理要返回的項目,從而確保代碼中的每個路徑都返回了某些內容。
在您的GetOptionFromUser
函數中,在if/else if/else if
結構之后,沒有return語句。 程序退出該結構並進入while
循環后,就無法從函數返回,這是無效行為。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.