2012-08-07 66 views
-1

因此,對於此C#類,我必須讓用戶在控制檯中輸入一個7位數的電話號碼。每個號碼都存儲爲不同的字符。然後每個字符都變成一個字母。數字改變後的字母沒有邏輯。 (我真的沒有看到這個任務的重點,這可能會對我的編碼器塊造成影響。)這是任務說的。將電話號碼轉換爲字母(C#)

您的任務:預付費電話服務需要將字母數字鍵盤輸入轉換爲電話號碼的程序。用戶將輸入八個字符,程序將輸出一個錯誤信息或翻譯的七位數電話號碼。輸入可能包含數字,字母或兩者。字母可以是大寫或小寫。

  • 的Main():編碼的

    方法聲明7個字符變量,並傳遞這些通過引用以下方法:

    • ProcessInput():獲取用戶輸入並執行轉換
      • ShowResults():顯示結果
        • GetInput():從用戶處獲取七個字符並將它們存儲到七個變量中Main()已通過參考。 ProcessInput():爲每個變量調用ToDigit(),通過引用傳遞每個字符變量,並將這些代碼中的一個返回給Main(),值爲: o 0如果沒有輸入錯誤 o -1如果有輸入錯誤」

程序將執行每一個標準電話小鍵盤佈局的轉換。

基本上,2秒A,B ,C 3是D,E,F 等,然後D,E,F等於3等等。

現在我除了輸入外沒有做任何事情,但它沒有存儲爲字符,只是一個字符串。我真的很討厭這個任務,因爲我們只是用Case和If語句做了兩個任務,這對我來說似乎是多餘的。

Console.WriteLine("Write a Phone Number that consists of Seven Numbers."); 
string Number = Console.ReadLine(); 

if (Number.Length != 7) 
    Console.WriteLine("You have entered a phone number that is too long."); 

Console.WriteLine("You have entered: {0}", Number); 
Console.ReadLine(); 

所以我真正的問題是:如何將輸入號存儲爲字符,然後用case語句定義這些字符?

+0

那麼你的問題是什麼?順便說一句,請標記您的問題'homework' – 2012-08-07 00:51:23

+0

如何存儲輸入數字作爲一個字符,然後用case語句來定義這些字符? – user1580598 2012-08-07 00:52:09

+0

您可以使用[String.ToCharArray(http://msdn.microsoft.com/en-us/library/ezftk57x.aspx)方法來創建你的字符數組 – 2012-08-07 00:57:08

回答

0

不迴應這一或者選擇一個正確答案,真的很抱歉,我終於想通了我自己。我遇到這麼多麻煩的原因是因爲我認爲我想爲1(800)384-2347創建幾個輸出,並將最後4個數字轉換爲可能有意義的各種字母。但這只是一個簡單的案例陳述。

0

因爲這是家庭作業,你應該做一些步驟:

  1. 創建的字母地圖以數字作爲對應於電話
  2. 循環遍歷輸入的字符串中的每個字符鍵盤:
    1. 如果它的數字(一個整數),然後在字母>數字映射中查找它,打印字符。
    2. 如果它的一個字母,然後查找同一張表,並打印相應的數字。
    3. 如果它不符合這兩個條件,則會打印一條錯誤消息。
+0

但是,如何映射字母和數字? 殼體= 2 殼體= 'A' 殼體= 'B' 殼體= 'C' 結果= '2' – user1580598 2012-08-07 00:56:51

+0

參見['Dictionary'](HTTP文檔://www.dotnetperls。com/dictionary) – 2012-08-07 00:57:45

+0

因爲他們剛剛學過IF和CASE語句,所以他可能不會使用字典,而是上面提到的工具之一。 – 2012-08-07 01:00:02

0

你可以只創建一個所有可能的輸入字符映射到所需輸出的字典。輸入後,您將根據字典替換字符。

+0

因爲他們剛剛學會了IF和CASE語句,所以他可能不會使用字典,而是上面提到的工具之一。 – 2012-08-07 00:58:05

+0

是的,代碼假設是由If和Case語句組成的。 :/ – user1580598 2012-08-07 01:00:11

0

這應該工作

 Dictionary<string, int> dict = new Dictionary<string, int>(); 
     dict.Add("ABC", 2); 
     dict.Add("CDE", 3); 
     dict.Add("FGH", 4); 
     dict.Add("JKL", 5); 

     string Numbers = "BDJ"; 
     string myints = ""; 
     foreach (char c in Numbers) 
      myints += dict.FirstOrDefault(X => X.Key.Contains(c)).Value.ToString(); 
//the output : "235" 
1

不要使用字典類,如果它沒有被涵蓋在課堂上,你可能會得到分配差了一個檔次,因爲這作業是使用工具,你可以解決在課堂上學習。

有兩種方法可以解決這個問題。

  1. 讓每一個字母或數字的人可能會進入一個switch聲明。如果您爲字母表中的每個字母輸入一個case並輸入相應的數字,這可能會讓您的成績很差,但是如果您使用case的某些功能,如「fall through」(無鏈接,我將它留給您研究這是什麼),你可能會得到一個好成績。

  2. 這也可以用if報表做的,就像1點,如果你讓每一個進入你會得到一個壞的A級if,但如果你能弄清楚如何與一個if解決A, B, C, and 1你可能取得好成績。


我會給你如何單獨獲得每個字母,因爲我不認爲這是教訓的purpous答案,easist方式是用foreach語句來做到這一點。

string finalNumber = ""; 
foreach(char digit in Number) 
{ 
    finalNumber += ProcessDigit(digit); 
} 
Console.WriteLine(finalNumber); 

//Elsewhere 
char ProcessDigit(char digit) 
{ 
    char newDigit; 

    //change digit to whatever you needed to turn it in to and store it in newDigit; 

    return newDigit; 
} 

也是另一個奉送,對字符串做ToUpperInvariant()你到的foreach給它之前,你只需要檢查大寫字母。

+0

那麼我怎樣才能讓輸入的數字能夠在switch/if語句中運行呢? – user1580598 2012-08-07 01:12:13

+0

更新了答案,因爲我不認爲這是您所描述的作業的意圖,而是在'foreach'語句中測試您。 – 2012-08-07 01:14:31

+0

我不認爲我們可以使用foreach語句:'[ – user1580598 2012-08-07 01:15:33

相關問題