2014-05-09 49 views
0

我有這個解決方案,我正在努力並試圖將3個不同的 問題的userInput返回給Main。這是我目前的。從方法中返回三個值

public static string GetInput() 
{ 
    //declared variables 
    string userInput; 
    string outputTitle; 

    Console.Write("Enter your name: "); 
    userInput= Console.ReadLine(); 

    Console.Write("Enter your age: "); 
    userInput = Console.ReadLine(); 

    Console.Write("Enter the Gas Mileage: "); 
    userInput = Console.ReadLine(); 

    return userInput; 


} 

我有它設置我從來沒有獲得通過的方式(「輸入您的姓名」);題。什麼是更好的方式去做這件事?

userName = InputUtilities.GetInput(userName); //錯誤2方法'GetInput'沒有超載需要1個參數

Console.Write(「Your name is:{0}」,userName);

+0

你要什麼這個方法返回? – Zeeshan

+0

此方法與Main不同。我想獲取名稱並將其返回到Main以顯示。然後隨着年齡增加,然後耗油量。 – floyd

回答

1

如果你想返回3個值,你必須有3個地方把他們:

public static List<String> GetInput() 
{ 
    //declared variables 
    string userInput; 
    List<String> userInputs = new List<String>(); 

    Console.Write("Enter your name: "); 
    userInput= Console.ReadLine(); 
    userInputs.Add(userInput); 

    Console.Write("Enter your age: "); 
    userInput = Console.ReadLine(); 
    userInputs.Add(userInput); 

    Console.Write("Enter the Gas Mileage: "); 
    userInput = Console.ReadLine(); 
    userInputs.Add(userInput); 

    return userInput; 
} 
9

使用一個類來定義你想要捕捉的輸入,並返回。

public class UserDetails 
    { 
     public string Name {get;set;} 
     public string Age {get;set;} 
     public string Mileage {get;set;} 
    } 

    public static UserDetails GetInput() 
    { 
     //declared variables 
     //string userInput; 
     //string outputTitle; 
     var userD = new UserDetails(); 

     Console.Write("Enter your name: "); 
     userD.Name = Console.ReadLine(); 

     Console.Write("Enter your age: "); 
     userD.Age = Console.ReadLine(); 

     Console.Write("Enter the Gas Mileage: "); 
     userD.Mileage = Console.ReadLine(); 

     return userD; 
    } 

編輯:使用輸出參數的例子。

void Main() 
{ 
    string name, age, mileage; 

    GetInput(out name, out age, out mileage); 

    //use name, age and mileage here. 
} 

public static void GetInput(out string pName, out string pAge, out string pMileage) 
{ 
    Console.Write("Enter your name: "); 
    pName = Console.ReadLine(); 

    Console.Write("Enter your age: "); 
    pAge = Console.ReadLine(); 

    Console.Write("Enter the Gas Mileage: "); 
    pMileage = Console.ReadLine(); 
} 
+0

謝謝你給我看!我不確定是否允許我爲這個項目創建另一個類。如果我被允許創建另一個類,這個想法很好用。 – floyd

+0

也許我叫它錯了InputUtilities.GetInput(out string userName); Console.Write(「Your name is:{0}」,userName); – floyd

+0

我收到過載錯誤 – floyd

0

您正在將用戶輸入的每個問題的值分配給相同的變量。每次寫入都會覆蓋以前的值,這意味着您應該只能得到最後一個問題的答案(「輸入汽油里程」)。有幾種常見的方法可以解決這個問題:

1)將每個連續的答案追加到同一個字符串(不推薦)。

2)創建一些對象來存儲所有答案(類或列表)。

3)使用輸出參數。

由於其他兩個答案已經解釋過了,這裏的輸出參數:

public static void GetInput(out string pName, out string pAge, out string pMileage) 
{ 
    // do stuff here .... 
} 
+0

我認爲這是我正在尋找的。謝謝。我會試試這個。 – floyd

+0

這會導致錯誤。名稱'pName'在當前上下文中不存在。當我將它拉到Main時會發生這種情況。我有申報pName,pAge,pMileage嗎? – floyd

+0

你是怎麼稱呼它的?您需要在main中聲明它們,並在調用GetInput()時使用它們作爲輸出參數() –

0

或者

public static object GetInput() 
{ 
    Console.Write("Enter your name: "); 
    var _name = Console.ReadLine(); 

    Console.Write("Enter your age: "); 
    var _age = Console.ReadLine(); 

    Console.Write("Enter the Gas Mileage: "); 
    vae _mileage = Console.ReadLine(); 

    return new { name = _name, age = _age, mileage = _mileage }; 
} 

或者

public static dynamic GetInput() 
{ 
    //declared variables 
    dynamic userinputs; 

    Console.Write("Enter your name: "); 
    var _name = Console.ReadLine(); 

    Console.Write("Enter your age: "); 
    var _age = Console.ReadLine(); 

    Console.Write("Enter the Gas Mileage: "); 
    vae _mileage = Console.ReadLine(); 

    userinputs.name = _name; 
    userinputs.age = _age; 
    userinputs.mileage = _mileage; 

    return userinputs; 
}