2010-11-12 55 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; } }

    相关问题