2016-07-18 4 views
-1

こんにちは私はこれで新しく、私は1を押すと直接食料品のラベルが付いたケースに行くように、他のケースステートメントの機能メニューを呼びたいと思います。うまくいけば私は完全に自分自身を説明しました。case文の関数を呼び出す方法は?

static void menu() 
{ 
    Console.WriteLine("Select a category to view"); 
    Console.WriteLine(""); 
    Console.WriteLine("1.Groceries"); 
    Console.WriteLine("2.Electronics & Appliances"); 
    Console.WriteLine("3.Exit"); 
    Console.ReadKey(); 

    int response = int.Parse(Console.ReadLine()); 
    switch (response) 
    { 
     case 1: 
      Console.WriteLine("...........Groceries..............."); 
      break; 

     case 2: 
      Console.WriteLine("..............Electronics & Appliances............"); 
      break; 
     case 3: 
      Console.WriteLine("...........Exit..............."); 
      break; 
    } 
} 

static void Main(string[] args) 
{ 
    menu(); 

    Console.WriteLine(@" Choose items being purchased from Groceries /n  
      1:stove = 3000 \n 2: potcollection = 2000 \n 
      3:lemonsqeezer = 1000 \n 4:oven = 10000 \n 5:blender = 6000"); 
    double stove = 3000; 
    double lemonsqeezer = 1000; 
    double oven = 10000; 
    double blender = 6000; 
    double potcollection = 2000; 

    Console.WriteLine("Enter a number from the above groceries list"); 

    int response = int.Parse(Console.ReadLine()); 
    if (response == 1) 
     switch (response) 
     { 
      case 1: 
       Console.WriteLine("The total is{0}",); 
       break; 
      case 2: 
       Console.WriteLine("The total is {0}",); 
       break; 
     } 
} 
+0

あなたは 'メイン(上持っているコードを)'メソッド内である必要があります。私はあなたがそれを持っているのを見ない。それは単なるコピー&ペーストミスですか?また、メニューの結果がどのようになっているかを調べる方法は? – siride

+0

コンテンツを適切に整列してください。メインの上のコードは、その一部の機能ですか?このスニペットには2つのスイッチケースがありますが、現在あなたが直面している困難は何ですか? '短期間であなたの質問が十分ではない' –

+0

あなたの質問(switch文で関数を呼び出す方法)はここでは意味をなさない。このコードには1つの関数しかありません。また、switch文の中にあるときは、その関数の中にすでに入っています。ここにある他のコードを呼び出す場合は、そのための別の関数を作成する必要があります。そして、それを呼び出すのはスイッチ内で同じで、どこからでも呼び出すことができます。 – Claies

答えて

0

私はあなたのコードを変更:

static void menu() 
{ 
    double[] groceries = new double[] { 3000, 1000, 10000, 6000, 2000 }; // By creating an array, you can easily get the price of an item by the index. 
    // double[] groceries = new double[] { stove, lemonsqeezer, oven, blender, potcollection }; 

    // double[] electronics_and_appliances = new double[] { ... }; 

    Console.WriteLine("Select a category to view"); 
    Console.WriteLine(""); 
    Console.WriteLine("1.Groceries"); 
    Console.WriteLine("2.Electronics & Appliances"); 
    Console.WriteLine("3.Exit"); 

    int response = int.Parse(Console.ReadLine()); 

    switch (response) 
    { 
     case 1: 
      Console.WriteLine("...........Groceries..............."); 
      Console.WriteLine(""); 
      Console.WriteLine(@" Choose items being purchased from Groceries /n  
       1:stove = 3000 \n 2: potcollection = 2000 \n 
       3:lemonsqeezer = 1000 \n 4:oven = 10000 \n 5:blender = 6000"); 
      Console.WriteLine(""); 
      Console.WriteLine("Enter a number from the above groceries list"); 

      // This prevents IndexOutOfRangeException. 
      try 
      { 
       Console.WriteLine("The total is {0}", groceries[int.Parse(Console.ReadLine()) - 1]); // Minus one becuase index's start from 0. 
      } 
      catch 
      { 
       Console.WriteLine("That item doesn't exist"); 
      } 

      break; 

     case 2: 
      Console.WriteLine("..............Electronics & Appliances............"); 
      /* 

      Console.WriteLine(""); 
      Console.WriteLine(@"Choose items being purchased from Electronics & Appliances/n ..."); 
      Console.WriteLine(""); 
      Console.WriteLine("Enter a number from the above Electronics & Appliances list"); 

      try 
      { 
       Console.WriteLine("The total is {0}", electronics_and_appliances[int.Parse(Console.ReadLine()) - 1]); 
      } 
      catch 
      { 
       Console.WriteLine("That item doesn't exist"); 
      } 

      */ 
      break; 
     case 3: 
      Console.WriteLine("...........Exit..............."); 
      break; 
    } 
} 

static void Main(string[] args) 
{ 
    menu(); 
} 
2

あなたは常にオプション1を処理し、あなたのswitchをラップif文を持っているので。

if (response == 1) // no other response other than 1 will get processed. 
    switch (response) 
    { 
     case 1: 
      Console.WriteLine("The total is{0}",); 
      break; 
     case 2: 
      Console.WriteLine("The total is {0}",); 
      break; 
    } 
} 

ifを削除し、他のcaseステートメントが実行されます。

1

あなたは既にそれをやっています。

switch (response) 
{ 
    case 1: 
     Console.WriteLine("...........Groceries..............."); 

あなたのcaseからConsole.WriteLineを呼んでいます。別のメソッドや関数を同じ方法で呼び出すことができます。

+0

実際の問題は 'response == 1'を許される唯一の条件にさせる' if'文の中に 'switch'をラップしていることです。 –

+0

ええ、私は今それを参照してください。私はちょうど非常にリテラルであると思う。私は文字通りの質問に答えましたが、それは彼が求めているものではありません。 –

関連する問題