2016-01-31 6 views
-1

Итак, мой вопрос заключается в том, как я смогу использовать метод ChooseCity для именования городов внутри метода городов, учитывая, что я уже улавливаю массив в его параметрах. Также я не был полностью уверен в том, как просто вызвать следующий в списке, а не выбирать случайный. Это код C#.Как я могу уловить две переменные в одном методе? C#

class Program 
{ 
    static void Main(string[] args) 
    { 
     Random random = new Random(); 
     List<string> nameCities = new List<string> { "Murcia", "Alicante", "Valencia", "Granada", "Albacete" }; 

     Cities(Inventory); 
    } 


    static void Cities(int[] Inventory) 
    { 
     InitializeConsoleWindow(); 

     Console.WriteLine(" You are now in the city of {0}", ChooseCity(nameCities, random) + " "); 

     DisplayReturnPrompt(); 
    } 

    private static string ChooseCity(List<string> nameCities, Random random) 
    { 
     int index = random.Next(nameCities.Count); 
     string chosenCity = nameCities[index]; 
     nameCities.RemoveAt(index); 
     return chosenCity; 
    } 
} 
} 
+0

Укажите, что это за язык программирования. – JJJ

+0

@Juhana Спасибо, я не заметил, что я не упоминал об этом. –

+0

@Pachelbel На самом деле это было, я только что попробовал, и это не сработало. То, что заставило его работать, состояло в том, чтобы сделать как список, так и случайным в публичной статике. –

ответ

0

Это не на 100% понятное, что вы хотите достичь. Ваша проблема в том, что вы не можете получить доступ к переменным, указанным в вашем методе Main? Тогда вы должны поместить их снаружи, например, как это:

class Program 
{ 

    static Random random = new Random(); 
    static List<string> nameCities = new List<string> { "Murcia", ...}; 
    ... 

Таким образом, эти переменные доступны для всех статических методов Program. Однако для более продвинутых программ я постараюсь избежать чрезмерного использования статических методов и переменных.

+0

Прошу прощения, что я не был ужасно ясен, я довольно новичок в программировании. Сожалею. В любом случае метод Madrid (int [] Inventory) уже имеет параметр «int [] Inventory» в скобках. Поэтому я был смущен тем, как привести строку «selectedCity» в мадридский метод. Я возвращаю его в конце своего метода «return selectedCity»; однако я не уверен, как поймать его с Мадридом. –

+0

Я все еще не уверен, понимаю ли я - хотите ли вы добавить еще один параметр в Madrid()? Возможно, вы могли бы добавить небольшое описание того, что ваша программа должна делать с вашим оригинальным сообщением. – Pachelbel

+0

Я хотел сказать метод Cities (int [] Inventory), и да, мне нужно просто сделать эту работу: Console.WriteLine («Теперь вы находитесь в городе {0}», ChooseCity (nameCities, random) + ""); –

0

Трудно понять, чего вы пытаетесь достичь. Что именно вы хотите, чтобы код выполнял?

Я выхожу на конечность здесь и предполагаю, что вы пытаетесь представить пользователю список городов, позволить им выбрать один из вариантов и отобразить их выбор. Предполагая, что я где-то на стадионах, вот код, который делает это в цикле, пока все ваши городские выборы не пошли:

class Program 
{ 
    static void Main(string[] args) 
    { 
     List<string> nameCities = new List<string> { "Murcia", "Alicante", "Valencia", "Granada", "Albacete" }; 

     Cities(nameCities); 
     Console.WriteLine("All out of cities. Press any key to exit."); 
     Console.ReadKey(); 
    } 

    static void Cities(List<string> cities) 
    { 
     while (cities.Count > 0) 
      ChooseCity(cities); 
    } 

    private static void ChooseCity(List<string> cities) 
    { 
     Console.WriteLine("Which city would you like to choose?\n"); 

     for(int i = 0; i < cities.Count; i++) 
      Console.WriteLine("{0} - {1}", i, cities[i]); 

     string s = Console.ReadLine(); 
     int idx; 
     if (int.TryParse(s, out idx) && idx >= 0 && idx < cities.Count) 
     { 
      Console.WriteLine("\nYou have chosen {0}\n", cities[idx]); 
      cities.RemoveAt(idx); 
     } 
     else 
     { 
      Console.WriteLine("\nInvalid option"); 
     } 
    } 
} 

Вы заметите, что я должен передать переменную cities из Main в Cities затем в ChooseCity. Это связано с тем, что переменные, объявленные внутри Main, являются локальными для этого метода, и другие методы не смогут их увидеть. Таким образом, вам нужно передать эту переменную в качестве аргументов другим методам, как я сделал здесь, или предоставить им более глобальную область (например, возможно, сделать их переменными класса).