2017-05-28 52 views
-2

在课堂上,我们正在学习如何在C#中开发模块化程序。我们必须执行以下操作:模块化C#错误

// public static int promptForInput(string prompt)。提示用户输入,显示“提示”。用户响应将传回给调用程序。

我有以下代码:

using System; 
class RockPaperScissors 
{ 
    public static void Main(string[] args) 
    { 

    } 
    //public static int promptForInput(string prompt) 
    //Prompts for user input, displaying "<prompt>". User response will be passed back to calling program 
    public static int promptForInput(string prompt) 
    { 

    } 
} 

的问题是,即使是给我下面的错误在VS:

错误1 'RockPaperScissors.promptForInput(字符串)' :并非所有代码路径 都返回值C:\ Users \ Maria \ Documents \ C#Files \ Mod 5 \ ConsoleApplication4 \ ConsoleApplication4 \ Program.cs 10 23 ConsoleApplication4

我该如何要求用户在我的提示方法中输入一个值并让Main方法显示该值?任何帮助将不胜感激。

+1

在'promptForInput'函数中返回一个值。 – OmG

+0

阅读[Console.ReadLine](https://msdn.microsoft.com/en-us/library/system.console.readline(v = vs.110).aspx)了解如何捕获用户输入。其次,您还应该了解如何从Main中调用PromptForInput函数。编译器错误是因为你没有从PromptForInput返回任何值 – Gururaj

+0

即使我添加了Console.Read();到主方法中的promptForInput和promptForInput(),没有任何内容正在传输。我可以得到以下工作: 使用系统; class RockPaperScissors { public static void Main(string [] args) { Method2(); } public static void Method2() { Console.WriteLine(“test”); Console.Read(); } } 但由于某种原因,原来不会。 – DMellon

回答

0

此错误的含义正是它所说的 - promptForInput不返回任何内容。方法签名“承诺”编译器,你会抛出一个int,你不知道。

如果你想返回的东西,你应该这样做:

public static int promptForInput(string prompt) 
{ 
    int ret = int.Parse(Console.Read()); 
    return ret; 
} 

免责声明:我不是坐在一个IDE面前。而且,如果用户输入的不是数字,这会引发异常。

+0

非常感谢您的帮助。我改变了我的代码,但它显示一个错误,说“参数1:不能从'int'转换为'string'”。再一次,对于所有这些和我的导师来说真的很新鲜,所以只是试图真正理解正在发生的事情,而不是仅仅复制他的代码。这是因为它期待一个“字符串提示”?感谢耐心。 – DMellon