2013-11-23 117 views
2

免責聲明:我是一個非常新的程序員,所以你可能不得不像我五歲那樣分手。C#方法 - 哪些參數去哪裏?

我對C#中的方法有一個非常基本的概述,並且具有將字母數字輸入轉換爲七位數電話號碼的任務。目前,我有足夠的代碼來獲得輸入(一次輸入:1234567)並以電話號碼格式顯示。但是,我需要運行在我的輸入檢查,所以值是正確的 - 無符號,第一個字符= 0,前三個字符= 555

下面是代碼我迄今:

class Program 
    { 
     static void Main(string[] args) 
     { 
      char c1 = ' '; 
      char c2 = ' '; 
      char c3 = ' '; 
      char c4 = ' '; 
      char c5 = ' '; 
      char c6 = ' '; 
      char c7 = ' '; 

      int returnVal = 0; 

      GetInput(ref c1, ref c2, ref c3, ref c4, ref c5, ref c6, ref c7); 

      returnVal = ProcessInput(ref c1, ref c2, ref c3, ref c4, ref c5, ref c6, ref c7); 
      if (returnVal == -1) { 
       Console.WriteLine("Invalid input, please try again. "); } 
      else { 
       ShowResults(ref c1, ref c2, ref c3, ref c4, ref c5, ref c6, ref c7); } 
     } 


     static void GetInput(ref char x1, ref char x2, ref char x3, ref char x4, ref char x5, ref char x6, ref char x7) 
     { 
      Console.WriteLine("Enter a 7 character phone number: "); 
      x1 = Convert.ToChar(Console.Read()); 
      x2 = Convert.ToChar(Console.Read()); 
      x3 = Convert.ToChar(Console.Read()); 
      x4 = Convert.ToChar(Console.Read()); 
      x5 = Convert.ToChar(Console.Read()); 
      x6 = Convert.ToChar(Console.Read()); 
      x7 = Convert.ToChar(Console.Read()); 
      Console.ReadLine(); 
     } 


     static int ProcessInput(ref char y1, ref char y2, ref char y3, ref char y4, ref char y5, ref char y6, ref char y7) 
     { 
      return 0; 
     } 


     static void ShowResults(ref char z1, ref char z2, ref char z3, ref char z4, ref char z5, ref char z6, ref char z7) 
     { 
      Console.WriteLine("The converted phone number is: {0}{1}{2}-{3}{4}{5}{6} ", z1, z2, z3, z4, z5, z6, z7); 
     } 

    } 

我失去的是如何運行這些參數和他們實際去哪裏(在哪個方法?)。任何幫助表示讚賞,我會澄清我可以在哪裏。謝謝。

+4

哎呀!不要這樣做:)使用*字符串*(或至少一個*字符序列*) - 做*不*使用每個數字的變量!這只是*太難*處理。另外,不要使用'ref',除非它真的*是必需的。在這種情況下,一旦進行上面的建議更改,就不是這樣。此外,'Console.Read'不會返回您認爲它的內容(請參閱文檔)。 – user2864740

+0

在您的文章中包含代碼,請勿鏈接到外部資源。 –

+0

像user2864740提到的一樣,堅持使用字符串。您可以通過將字符串視爲數組來訪問各個數字。例如,如果你有'string phoneNumber ='4441234567''那麼你可以通過使用「phoneNumber [0]」得到第一個數字,第二個用「phoneNumber [1]」等等 –

回答

1

下面是一些可用於實現目標的構造。我不想重寫你的程序,但我將使用string而不是7個char's。這不應該是一個很好的解決方案,相反,它應該演示基本的控制流程和條件以及驗證字符串的一些基本技巧。

string input = Console.ReadLine(); 

if (input.Length == 7) 
{ 
    if (!input.StartsWith("555")) 
    { 
     if (input[0] != '0') 
     { 
      int temp; 
      if (!int.TryParse(input[0].ToString(), out temp) 
      { 
      } 
      else 
      { 
       // first char is not an int 
      } 
     } 
     else 
     { 
      // first char is 0 error 
     } 
    } 
    else 
    { 
     /// 555 error 
    } 
} 
else 
{ 
     // wrong amount of digits 

} 

要打印字符串,你可以使用和String.Format組合String.SubString

Console.WriteLine(String.Format("{0}-{1}", input.SubString(0,2), input.SubString(3,6))); 
+0

小心點,不要爲他做這個傢伙的作業:) –

+0

@Zain我可能沒有嵌套'如果'是爲了讓它不那麼完整,但我認爲它可能更有幫助以顯示順序檢查。 – evanmcdonnal

+1

這裏的女性,實際上,這絕對不算在我看來是一個完整的家庭作業解決方案。 :) – Ozala