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;

クラス Player からの私のメソッドは次のとおりです。

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();
    }
4

2 に答える 2

0

whileあなたが書いた方法でのループは、最初にループに入る前に条件を評価します。に初期化enterplayerする""ため、最初に while 条件がテストされたときに戻りfalse、ループに入ることはありません。これは次の 2 つの方法で修正できます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これは、ループ内のコードが常に少なくとも 1 回実行され、最後の条件が満たされる限り繰り返されることを意味します。

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

あなたのコードはenterplayer変数を使用してプレーヤーを追加するかどうかを決定しているので、2 番目の形式をお勧めしwhileます。

于 2013-07-30T18:17:45.793 に答える