C#中如何为用户输入的字符串映射int值及编译报错解决
报错原因解释
1. 关于Not all code paths return a value报错
你声明的Method方法返回值类型是int,要求所有执行分支都必须返回一个int类型的结果。你目前只写了输入等于Rock时的return逻辑,只要用户输入其他内容(比如Paper、Scissors或者任意非Rock的字符串),if条件不成立,方法执行到最后没有返回任何值,就会触发这个报错。
2. 关于There is no argument given that corresponds to the required formal parameter 'choice' of 'RockPaperScissors.Method()'报错
这个报错说明你实际运行的代码和你贴出的版本存在差异:你贴的代码里Method是无参的,但你运行的版本里Method定义了名为choice的必填参数,调用Method()的时候没有传参才会触发该问题。如果是中途修改了代码没保存,或者VS Code编译缓存没清,保存文件后重新编译即可解决。
代码修正方案
补全所有判断分支,再增加默认的无效输入返回逻辑即可,修改后的参考代码如下:
using System; class RockPaperScissors { static int Method() { string playerString = Console.ReadLine(); // 定义三个选项对应的数值 const int Rock = 1; const int Paper = 2; const int Scissors = 3; if (playerString == "Rock") { return Rock; } else if (playerString == "Paper") { return Paper; } else if (playerString == "Scissors") { return Scissors; } // 输入不匹配的情况返回0代表无效输入 else { return 0; } } static void Main() { int Move = Method(); if (Move == 0) { Console.WriteLine("输入无效,请输入Rock、Paper或Scissors"); } else { Console.WriteLine(Move); } } }
内容的提问来源于stack exchange,提问作者BreadSkirt
相关产品推荐
相关产品推荐

