2010-11-12 53 views
1

我正在做一個家庭作業,從C#開始。需要一次讀取一個字符,直到達到10個字符

必須從用戶接受輸入:用數字或字符

    • 電話號碼,那麼只返回數的數字版本。

    我的程序需要輸入並返回值,但在輸入10個字符後不會結束。 您可以根據需要輸入任意數量的字符,然後當輸入按下時,它只顯示前10個。 它也不會在每個字符輸入後測試個案。似乎在最後做。 我想輸入每個字符進行測試,然後輸入一次十個字符 程序顯示結果。

    我希望我給予足夠的信息。我非常強調這一點。 明天將到期,我還有其他一些計劃尚未完成。 任何幫助將不勝感激。

    我的代碼:

    Console.Write("Please enter your phone number: "); 
         do 
         { 
          int temp = Console.Read(); 
          input = Convert.ToChar(temp); 
          //int tempInput = Convert.ToString(tempInput); 
          switch (input) 
          { 
           case '0': 
            alphaNumericPhoneNumber += input.ToString(); 
            numericPhoneNumber += input.ToString(); 
            counter--; 
            break; 
    // { other cases } 
           default: 
            // if input does not match cases then loop returns to 
            // request new input 
            Display.Error(input.ToString()); 
            Console.Write(alphaNumericPhoneNumber); 
            //Display.Continue(); 
            //Console.Clear(); 
            input = ' '; 
            break; 
          } 
         } 
         while (numericPhoneNumber.Length < 0); 
         return numericPhoneNumber; 
        } 
    
  • +3

    *「我非常強調這個,是因爲明天我有幾個其他節目做呢。」 *呵呵,已經有隊友 - 這是像每一個單任務我。總是到達那裏。 – RPM1984 2010-11-12 03:53:06

    +0

    @ RPM1984這是學生生活的樂趣。 – TheVillageIdiot 2010-11-12 03:56:42

    +0

    @TheVillageIdiot - 絕對!那麼我想我支付了在學生酒吧跳過所有講座而轉向游泳池/啤酒的價格。 :) – RPM1984 2010-11-12 04:14:12

    回答

    4

    documentation for the Console.Read() method解釋所描述的行爲。

    Read方法在鍵入輸入字符時阻止其返回;當您按下Enter鍵時它會終止。 [...]隨後對Read方法的調用一次檢索您的輸入一個字符。

    如果你要處理的字符到達時,您可以使用KeyAvailableReadKey方法爲demonstrated的文件中。該示例以5種.NET語言提供,包括C#。

    +0

    感謝您的回覆。我使用了ReadKey,它運行良好。這是我們迄今爲止學到的範圍之外的一點......但我認爲教授會很好。再次感謝 – subcan 2010-11-12 06:03:44

    3

    基本上你需要使用Console.ReadKey()代替Console.Read(),因爲後者從ENTER按預期一\n返回,並立即前者返回鍵按下時。

    class Program 
        { 
         static void Main(string[] args) 
         { 
          ReadPhone(); 
          Console.ReadLine(); 
         } 
    
         private static void ReadPhone() 
         { 
          var numericPhoneNumber = string.Empty; 
    
          Console.Write("Please enter your phone number: "); 
          do 
          { 
           var keyInfo= Console.ReadKey(); 
           if (char.IsDigit(keyInfo.KeyChar)) 
           { 
            numericPhoneNumber += keyInfo.KeyChar; 
           } 
           else 
           { 
            Console.WriteLine(); 
            Console.WriteLine("Please enter numeric numbers only"); 
           } 
          } 
          while (numericPhoneNumber.Length <= 10); 
          Console.WriteLine("Phone Number: {0}", numericPhoneNumber); 
         } 
        } 
    
    0
    static void Main(string[] args) 
    { 
        int i=0; 
        string str=String.Empty; 
        Char c;    
        Console.WriteLine("Enter number:"); 
        while (i < 10) 
        { 
         if (char.IsDigit(c = Console.ReadKey().KeyChar)) 
         { 
          str += c; 
          i++; 
         } 
        } 
        Console.WriteLine("str: "+str); 
    } 
    
    0

    好了,不那麼肯定要幫助你做作業。我在學習時曾經把我的作業賣給其他孩子,所以我想我不能在這裏採取道德制高點。

    這裏有一個解決方案,但要確保你做一些Google搜索並瞭解它是如何工作的。

    // Initialise the result to nothing. 
    string result = string.Empty; 
    
    do 
    { 
        // Prompt for input. 
        Console.WriteLine("Please enter your 10-digit phone number: "); 
    
        // Read the response. 
        string input = Console.ReadLine(); 
    
        // Replace any characters that are not numbers with the empty string (remove them). 
        result = System.Text.RegularExpressions.Regex.Replace(input, "[^0-9]", string.Empty); 
    } 
    while (result.Length != 10); 
    
    // Do something with the result. 
    Console.WriteLine("You typed: '{0}'.", result); 
    

    如果你想一次讀取(這聽起來有點奇怪我)一個字符,那麼你可以這樣做:

    // Initialise the result to nothing. 
    string result = string.Empty; 
    
    // Prompt for input. 
    Console.WriteLine("Please enter your 10-digit phone number: "); 
    
    do 
    { 
        string input = Console.ReadKey().KeyChar.ToString(); 
    
        // Replace any characters that are not numbers with the empty string (remove them). 
        result += Regex.Replace(input, "[^0-9]", string.Empty);   
    } 
    while (result.Length != 10); 
    
    // Do something with the result. 
    Console.WriteLine("You typed: '{0}'.", result); 
    
    0

    感謝大家的幫助。 我結束了使用readkey評估每個字符,並根據電話鍵盤分配其相應的數值。 我不認爲我在原來的文章中對此很清楚......在當時很少強調......在這個問題上花了很長時間。 對這篇文章的回覆顯示了一些非常乾淨的代碼。我希望很快達到這個水平。 我將展示我最終做的事情,只是告訴某人感興趣。 再次感謝您的幫助。

     
    class Request 
        { 
         public static void GetPhoneNumber(out string UserInput, out string ConvertedString) 
         { 
          // create instance of ConsoleKeyInfo 
          ConsoleKeyInfo cki = new ConsoleKeyInfo();

    string alphaNumericPhoneNumber = " "; string numericPhoneNumber = " "; char input = ' '; Console.Write("Please enter your phone number: "); // perform a do... while loop to read 10 characters of input do { cki = Console.ReadKey(); input = cki.KeyChar; switch (char.ToUpper(input)) { case '0': alphaNumericPhoneNumber += input.ToString(); numericPhoneNumber += input.ToString(); break; case '1': alphaNumericPhoneNumber += input.ToString(); numericPhoneNumber += input.ToString(); break; case 'A': case 'B': case 'C': case '2': alphaNumericPhoneNumber += input.ToString(); numericPhoneNumber += "2"; break; case 'D': case 'E': case 'F': case '3': alphaNumericPhoneNumber += input.ToString(); numericPhoneNumber += "3"; break; case 'G': case 'H': case 'I': case '4': alphaNumericPhoneNumber += input.ToString(); numericPhoneNumber += "4"; break; case 'J': case 'K': case 'L': case '5': alphaNumericPhoneNumber += input.ToString(); numericPhoneNumber += "5"; break; case 'M': case 'N': case 'O': case '6': alphaNumericPhoneNumber += input.ToString(); numericPhoneNumber += "6"; break; case 'P': case 'Q': case 'R': case 'S': case '7': alphaNumericPhoneNumber += input.ToString(); numericPhoneNumber += "7"; break; case 'T': case 'U': case 'V': case '8': alphaNumericPhoneNumber += input.ToString(); numericPhoneNumber += "8"; break; case 'W': case 'X': case 'Y': case 'Z': case '9': alphaNumericPhoneNumber += input.ToString(); numericPhoneNumber += "9"; break; default: // if input does not match cases then loop returns to // request new input Console.Clear(); Display.Error(input.ToString()); // display for user to continue... displays valid numbers so far Console.Write("Continue with phone number: " + alphaNumericPhoneNumber); input = ' '; // returns blank character and not added to strings so not counted break; } } while (numericPhoneNumber.Length < 11); // counts until string has 10 digits UserInput = alphaNumericPhoneNumber; ConvertedString = numericPhoneNumber; } }

    相關問題