2014-12-04 21 views
-3

我的輸入被「TryParse」檢查。如果它是假的,我想讓用戶正確輸入。但是,當我點擊任何按鍵後,它會刪除上面的所有「Console.Clear();」的原因。 - 我只想刪除輸入部分,而不是上面的部分。讓用戶在不干擾其他字符串的情況下重新輸入輸入(C#)

namespace Practice 
{ 
    class Program 
    { 
     static void Main(string[] args)  // Main Method 
     { 
      byte age1, age2; 
      string input; 

      do 
      { 
       Console.Write("Enter Age 1: "); input = Console.ReadLine(); 
       if (!byte.TryParse(input, out age1)) Error(); 
      } while (!byte.TryParse(input, out age1)); 

      do 
      { 
       Console.Write("Enter Age 2: "); input = Console.ReadLine(); 
       if (!byte.TryParse(input, out age1)) Error(); 
      } while (!byte.TryParse(input, out age2)); 
     } 

     static void Error() 
     { 
      Console.ForegroundColor = ConsoleColor.Red; 
      Console.Write("Invalid Input..."); 
      Console.ResetColor(); 
      Console.ReadKey(); 
      Console.Clear(); 
     } 
    } 
} 
+0

你在問你的代碼風格嗎? – Toumash 2014-12-04 21:15:57

+0

'byte age1,age2'應該是'int ||' Int32'也請修正格式不正確的代碼..也不要放置多行代碼將事情分開放在一行上,這使得很難閱讀你正在嘗試做的事情,並且很容易被查看或錯過這行'Console.WriteLine(「Age 1-> {0}'如果你使用'string.Format()'方法,它會清理我的意見 – MethodMan 2014-12-04 21:20:35

+0

沒有理由改變字節... byte 0 -255,我不認爲很多人活到接近這個年齡。 – 2014-12-04 21:23:23

回答

0

我不確定是否可以從控制檯緩衝區中擦除一行。但是,如果你改變了第二,而在你的代碼,你可以模擬它:

while (!byte.TryParse(input, out age2) && counter) { Error(); Console.WriteLine("Enter Age 1: {0}",age1); Console.Write("Enter Age 2: "); input = Console.ReadLine(); } // Check And Error Output

Console.Clear();執行後,這條線Console.WriteLine("Enter Age 1: {0}",age1);,好像你已經刪除了錯誤的輸入線。

+0

我很欣賞它,我感謝你的迴應。 。你幫了我 - 我很抱歉,如果你不明白我的問題,或者無法讀取我的代碼,有趣的程序員有點抱怨,但是無論如何 - 我到目前爲止已經在學院學習C#1年了。認爲在無效輸入被移除和重新放置的情況下學習這種演示功能會很方便沒有清除上面的所有內容。 - >如果你好奇,你可以看看我做了什麼 - > http://pastebin.com/4v58razK – 2014-12-07 11:46:54

+0

@monstrasitix:很高興我幫你。如果你可以請接受我的答案。我在pastebin中看到了你的代碼。如果你的年齡變量不斷增長,你應該在方法中封裝年齡檢查和打印。當出現錯誤時,使您的代碼更易於閱讀和遵循。 – pepOS 2014-12-08 13:38:59

相關問題