0

ここでちょっと迷った。私の問題は、ユーザーが果物を選択できるようにする単純なコード ブロックを作成したことです。コードは、1 つの問題を除いて、私がやりたいことを実行します。ユーザーがオプションのフルーツの 1 つを再選択できるようにするには、コードの先頭にループバックする必要があります。

しかし、私はそれを機能させることができないようですが、問題はループについての私の理解であり、より注意が必要であると思われます. ループを実行するには、初期化子と何らかの条件が必要になることを理解しています。次のようなループを実行しようとするなど、多くの(クレイジーな)ことを試しました:for (string[ ] fruitArray = {"Banana", "Apple", "Orange", "Pineapple"}); しかし、コンパイラにはそれがなく、スタックオーバーフローコミュニティもそれを受け入れないだろうと思います. ヘルプやアドバイスをいただければ幸いです。

{

            Console.WriteLine("\n", "\n");

            string[] fruitArray = {"Banana", "Apple", "Orange", "Pineapple"};

            Console.WriteLine("Please select your fruit: \n\n{0} \n{1} \n{2} \n{3}" + "\n", fruitArray[0], fruitArray[1], fruitArray[2], fruitArray[3]);
            string selection = Console.ReadLine();


            if (selection == fruitArray[0])
            {
                Console.WriteLine("\nYou have selected {0} ", fruitArray[0]);
            }
            else if (selection == fruitArray[1])
            {
                Console.WriteLine("\nYou have selected {0} ", fruitArray[1]);
            }
            else if (selection == fruitArray[2])
            {
                Console.WriteLine("\nYou have selected {0} ", fruitArray[2]);
            }
            else if (selection == fruitArray[3])
            {
                Console.WriteLine("\nYou have selected {0} ", fruitArray[3]);
            }
            else
            {
                Console.WriteLine("\nSelection not recognised. Please select fruit: ");
            }

         }

        Console.ReadKey();

    }
  }
}
4

4 に答える 4

2

出口なしでループする

while (true)
            {
                Console.WriteLine("\n", "\n");

                string[] fruitArray = { "Banana", "Apple", "Orange", "Pineapple" };

                Console.WriteLine("Please select your fruit: \n\n{0} \n{1} \n{2} \n{3}" + "\n", fruitArray[0], fruitArray[1],
                                  fruitArray[2], fruitArray[3]);
                string selection = Console.ReadLine();

                switch (selection)
                {
                    case "Banana":
                        Console.WriteLine("\nYou have selected {0} ", fruitArray[0]);
                        break;

                    case "Apple":
                        Console.WriteLine("\nYou have selected {0} ", fruitArray[1]);
                        break;

                    case "Orange":
                        Console.WriteLine("\nYou have selected {0} ", fruitArray[2]);
                        break;

                    case "Pineapple":
                        Console.WriteLine("\nYou have selected {0} ", fruitArray[3]);
                        break;                    
                } 
            }          

終了条件でループ

            var isLoop = true;

            do
            {
                Console.WriteLine("\n", "\n");

                string[] fruitArray = {"Banana", "Apple", "Orange", "Pineapple"};

                Console.WriteLine("Please select your fruit: \n\n{0} \n{1} \n{2} \n{3}"   + "\n", fruitArray[0],
                                  fruitArray[1],
                                  fruitArray[2], fruitArray[3]);
                string selection = Console.ReadLine();


                switch (selection)
                {
                    case "Banana":
                        Console.WriteLine("\nYou have selected {0} ", fruitArray[0]);
                        break;

                    case "Apple":
                        Console.WriteLine("\nYou have selected {0} ", fruitArray[1]);
                        break;

                    case "Orange":
                        Console.WriteLine("\nYou have selected {0} ", fruitArray[2]);
                        break;

                    case "Pineapple":
                        Console.WriteLine("\nYou have selected {0} ", fruitArray[3]);
                        break;
                    default:
                    isLoop = false;
                    break;
                }
            } while (isLoop);
于 2012-10-31T02:23:36.427 に答える
1

次のコードは、あなたが望むことを正確に実行するはずです。それだけでなく、ブロックifステートメントやを使用する必要性も単純化されます。入力が有効かどうかを判断するにはswitch、単純なもので十分です。Array.FindIndexまた、終了句を追加しました。これにより、ユーザーは終了時にアプリケーションを終了でき、UIの乱雑さを取り除くために、「反復」するたびにコンソールウィンドウをクリアします。

    static void Main(string[] args)
    {
        var selection = "";
        while (selection != "q")
        {
            Console.WriteLine(Environment.NewLine);
            string[] fruitArray = { "Banana", "Apple", "Orange", "Pineapple" };

            Console.WriteLine("Please select your fruit (or Q to quit): \n\n{0} \n{1} \n{2} \n{3}", fruitArray[0], fruitArray[1], fruitArray[2], fruitArray[3]);
            Console.Write(Environment.NewLine + "-> ");
            selection = Console.ReadLine().ToLower();

            // valid option selected
            var index = Array.FindIndex(fruitArray, (fruit) => fruit.ToLower() == selection);
            if (index > -1)
            {
                Console.Write("\nYou have selected {0}.", fruitArray[index]);
                ContinuePrompt();
            }
            else if (selection != "q")
            {
                Console.Write("\nSelection not recognised.");
                ContinuePrompt();
            }
        }
     }

    static void ContinuePrompt()
    {
        Console.Write(" Press any key to continue...");
        Console.ReadKey();
        Console.Clear();
    }
于 2012-11-02T13:17:21.607 に答える
1

あなたの例では、これで十分です:

string[] fruitArray = { "Banana", "Apple", "Orange", "Pineapple" };

Console.WriteLine("Please select your fruit: \n\n{0} \n{1} \n{2} \n{3}" + "\n", fruitArray[0], fruitArray[1],
                              fruitArray[2], fruitArray[3]);
string selection = Console.ReadLine();

Console.WriteLine("\nYou have selected {0} ", selection);

おそらく私は何かが欠けています、私は何を理解してうれしいです:)

また、配列を反復することで最初のメッセージを改善することもできます:

Console.WriteLine("Please select your fruit: \n");

for(int i=0;i<fruitArray.Length;i++)
{
    Console.WriteLine(fruitArray[i]);
}

それが役に立てば幸い。

于 2012-10-31T22:24:21.677 に答える
1

C# http://msdn.microsoft.com/en-us/library/ch45axte.aspxの場合

C# foreach http://msdn.microsoft.com/en-us/library/ttw7t8t6.aspx

string[] fruitArray = { "Banana", "Apple", "Orange", "Pineapple" };

        Console.WriteLine("Please select your fruit: \n");            
        foreach (string fruit in fruitArray)
        {
            Console.Write("\n{0}", fruit);
        }

        Console.WriteLine();



            string selection = Console.ReadLine();
            for (int index = 0; index < fruitArray.Length; index++)
            {
                if (fruitArray[index].Equals(selection))
                {
                    Console.WriteLine("\nYou have selected {0} ", fruitArray[index]);
                    break;
                }
            }

            foreach (string fruit in new[] {"Banana", "Apple", "Orange", "Pineapple" })
            {
                if (fruit.Equals(selection))
                {
                    Console.WriteLine("\nYou have selected {0} ", fruit);
                    break;
                }
            }
于 2012-10-31T02:17:05.397 に答える