我还没完全理解方法,我不知道为什么会发生这种情况......我试图让我的代码改为单词,我认为这是要走的路。
namespace ConsoleApplication9
{
class Program
{
static void Main(string[] args)
{
Random r = new Random();
Console.WriteLine("Hi wanna play rock paper scissors?<press enter to continue>");
Console.ReadKey();
int user = 0;
int ai = r.Next(1, 4);
Console.WriteLine("Pick what youll show! (1-rock, 2-paper, 3-scissors) and press enter");
user = Convert.ToInt32(Console.ReadLine());
if (user > 3)
{
Console.WriteLine("ERROR! your number must be <= 3. <Press enter to close the program>");
goto end;
}
if (user == ai)
{
Console.WriteLine("Its a draw! <press enter to continue>");
goto end;
}
Console.WriteLine(user);
end:
Console.ReadKey();
}
public static string ntw (int user) //ntw: not all code paths return a value
{
if (user == 1)
return "rock";
if (user == 2)
return "paper";
if (user == 3)
return "scissors";
}
}
}
提前致谢。
答案 0 :(得分:9)
您方法的返回类型为1
。这意味着你的方法应该总是返回一些字符串值。使用当前实现时,当用户变量的值为2
或3
或25
时,它会返回一些字符串。如果您使用值1
调用此方法,该怎么办?编译器不知道该怎么做!
如果用户值不是2
或3
或public static string ntw (int user)
{
if (user == 1)
return "rock";
if (user == 2)
return "paper";
if (user == 3)
return "scissors";
return string.empty; // Here i am returning an empty string.
}
{{1}}
答案 1 :(得分:1)
你也可以使用switch语句,在这种情况下,如果用户不是1,2或3,默认会给你一个Null或一个空字符串:)
public static string ntw (int user)
{
switch (user)
{
case 1:
return "rock";
case 2:
return "paper";
case 3:
return "scissors";
default:
return null; // or return string.Empty
}
}
答案 2 :(得分:0)
如果值必须在1..3范围内(并且返回string.Empty
字符串没有意义)那么你可以写:
public static string ntw (int user)
{
if (user == 1)
return "rock";
if (user == 2)
return "paper";
if (user == 3)
return "scissors";
throw new ArgumentException("Invalid choice");
}
并在程序中的某处处理异常。