2011-10-09 136 views
-1

我想要做的是在人們放入他們的名字之後,詢問他們是否希望再次這樣做,如果沒有,請按n並退出程序。但我似乎無法讓它工作。我嘗試添加一個退出案例,仍然沒有。似乎無法循環切換語句

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 

namespace TestApp 
{ 
    class Program 
{ 
    static void Main() 
    { 
     Console.Write("Please enter your name: "); 
     string name = Console.ReadLine(); 
     Test(name.ToLower()); 
     Console.ReadLine(); 

    } 

    static void Test(string name) 
    { 
     bool exit = true; 
     string answer = ""; 

     do 
     { 
      switch (name) 
      { 
       case "name": 
        Console.WriteLine("Hello Name"); 
        break; 
       case "name2": 
        Console.WriteLine("Hello Name2"); 
        break; 
      } 

      Console.WriteLine("Would you like to enter a new name? y/n: "); 
      if (answer == "y") 
       exit = false; 
      else 
       exit = true; 
     } 
     while (exit == false); 
    } 
} 
} 
+6

它目前在做什麼?當你說一些「不起作用」的東西時,描述什麼是「不工作」意味着一個好主意。它給你一個錯誤?如果是這樣,那麼錯誤是什麼。如果不是,它是什麼(不)做它應該(不)? – Amber

+0

您需要的任何幫助或您可以接受有用的答案。 –

回答

2

您不會更改循環中的「answer」變量。你在循環中缺少一個Console.ReadLine()。

Console.Write("Would you like to enter a new name? y/n: "); 
answer = Console.ReadLine(); <----------- this was missing 
exit = (answer == "y" || answer == "Y"); <------- this slight improvement 

此外,您應該讀取循環內的名稱,因爲當退出爲false時您想再次閱讀它。現在你一遍又一遍地檢查同一個名字。

static void Test() <---- remove the name parameter 
{ 
    bool exit = true; 
    string answer = ""; 

    do 
    { 
     Console.Write("Please enter your name: "); 
     string name = Console.ReadLine().ToLower();  <--- read name here 
+0

嗯,我補充說,問題是,爲什麼我打「y」。它一遍又一遍地提出同樣的問題。 –

+0

@BillFountaine閱讀更新的答案 –

1

answer = Console.ReadLine(); //你的代碼中缺少這一行。

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 

namespace TestApp 
{ 
    class Program 
{ 
    static void Main() 
    { 
     Console.Write("Please enter your name: "); 
     string name = Console.ReadLine(); 
     Test(name.ToLower()); 
     Console.ReadLine(); 

    } 

    static void Test(string name) 
    { 
     bool exit = true; 
     string answer = ""; 

     do 
     { 
      switch (name) 
      { 
       case "name": 
        Console.WriteLine("Hello Name"); 
        break; 
       case "name2": 
        Console.WriteLine("Hello Name2"); 
        break; 
      } 

      Console.WriteLine("Would you like to enter a new name? y/n: "); 
      answer = Console.ReadLine(); // you're missing this line in your code. 
      if (answer == "y") 
       exit = false; 
      else 
       exit = true; 
     } 
     while (exit == false); 
    } 
} 

}

0

結合哈桑和惡劣提出的觀點,下面是似乎做你希望什麼工作示例。

static void Test() 
{ 
    bool exit = true; 
    string answer = ""; 

    do 
    { 
     Console.Write("Please enter your name: "); 
     string name = Console.ReadLine(); 

     switch (name) 
     { 
      case "name": 
       Console.WriteLine("Hello Name"); 
       break; 
      case "name2": 
       Console.WriteLine("Hello Name2"); 
       break; 
     } 

     Console.WriteLine("Would you like to enter a new name? y/n: "); 
     answer = Console.ReadLine(); 
     if (answer == "y") 
      exit = false; 
     else 
      exit = true; 
    } 
    while (!exit); 
} 

當然,如果你輸入一個名稱,不是「名1」或「NAME2」,然後事情開始,因爲你還沒有真正確定你想有發生在這種情況下,什麼越來越怪異。但希望這可以讓你有一個好的開始。