2013-07-30 51 views
0

我想從另一個類調用一個方法。 p.players()應該打開了,當我選擇這個菜單選項:從另一個類的方法不叫

static void Main(string[] args) 
    { 

     Enumfactory.Position choice; 
     Enumfactory.Location location; 
     Player p = new Player(); 


     Console.WriteLine("Please choose from one of the following:"); 
     Console.WriteLine("1. GoalKeeper"); 
     Console.WriteLine("2. Defender"); 
     Console.WriteLine("3. Midfielder"); 
     Console.WriteLine("4. Striker"); 
     choice = ((Enumfactory.Position)(int.Parse(Console.ReadLine()))); 

     string exit = ""; 

     while (exit != "Y") 
     { 

      switch (choice) 
      { 
       case Enumfactory.Position.GoalKeeper: 
        //assigning the actual position 
        p.Position = Enumfactory.Position.GoalKeeper; 
        p.players(); 
        break; 

這裏是從類播放器我的方法:

public string[] players() 
    { 
     List<string> PlayerList = new List<string>(); 
     Player player = new Player(); 
     string enterplayer = ""; 
     while (enterplayer == "Y") 
     { 
      Console.WriteLine("Please enter the teamnumber of your player"); 
      player.teamNumber = int.Parse(Console.ReadLine()); 
      Console.WriteLine("Please enter the name of your player"); 
      player.name = Console.ReadLine(); 
      Console.WriteLine("Please enter the surname of your player"); 
      player.surname = Console.ReadLine(); 
      Console.WriteLine("Enter the age of your player"); 
      player.age = int.Parse(Console.ReadLine()); 
      Console.WriteLine("Please enter the goals the player scored"); 
      player.goalsScored = int.Parse(Console.ReadLine()); 

      PlayerList.Add(player.teamNumber.ToString()); 
      PlayerList.Add(player.name); 
      PlayerList.Add(player.surname); 
      PlayerList.Add(player.age.ToString()); 
      PlayerList.Add(player.goalsScored.ToString()); 

      Console.WriteLine("Do you wish to enter another player? Y/N"); 
      enterplayer = Console.ReadLine(); 
     } 
     foreach (var item in PlayerList) 
     { 
      Console.WriteLine("to view your player"); 
      Console.Write("{0}", item); 
     } 
     Console.ReadKey(); 
     return player.players(); 
    } 
+3

我認爲你的問題是'while(enterplayer ==「Y」)''。 'enterplayer'永遠不會等於'Y' – computer10171

+0

代碼是否符合方法?還是像上面所說的那樣不要觸及while循環? –

+0

謝謝!我拿出了while循環,它現在可以工作 – DavMar

回答

1

的方法可能被調用,它只是你的while循環永遠不會運行。這是因爲enterplayer永遠不會等於「Y」,因此while循環中的代碼永遠不會運行(這看起來像您的方法未被調用)。

您的意思是以下嗎?

string enterplayer = ""; 
while (enterplayer != "Y") 
{ 
    ... 
} 
0

while循環在你寫的方式,將第一次進入循環之前評估條件。您將enterplayer初始化爲"",因此第一次對while條件進行測試時,它將返回false並且永不進入循環。使滿足條件時第一時間通過您可以通過兩種方式解決這個問題,無論是初始化enterplayer

string enterplayer = "Y"; 
while (enterplayer == "Y") // We set enterplayer to "Y" so this is true first time through 
{ 
    // Your code to add a player goes here 
} 

...或者,你可以使用while循環,其中評估條件的形式稍有不同最後。這意味着,循環內的代碼至少執行一次,然後只要在最後的while條件滿足重複:

string enterplayer = ""; 
do // This always enters the loop code first time 
{ 
    // Your code to add a player goes here 
} 
while (enterplayer == "Y") 

由於您的代碼使用的是enterplayer變量來決定是否添加更多的玩家,我更喜歡第二種形式,儘管作爲while構造的變體,它可能比前者更少使用。