-1

したがって、このC#クラスでは、ユーザーに7桁の電話番号をコンソールに入力させる必要があります。各番号は異なる文字として保存されます。次に、各文字が文字に変更されます。数字が変更される文字の背後に論理はありません。(コーダーのブロックに貢献している可能性のあるこの割り当てのポイントは実際にはわかりません。)割り当ての内容は次のとおりです。

あなたの使命:プリペイド電話サービスには、英数字のキーボード入力を電話番号に変換するプログラムが必要です。ユーザーは8文字を入力し、プログラムはエラーメッセージまたは翻訳された7桁の電話番号を出力します。入力には、数字、文字、またはその両方を含めることができます。文字は大文字でも小文字でもかまいません。

コーディング方法:

  • Main():7つの文字変数を宣言し、これらを参照により次のメソッドに渡します。
    • ProcessInput():ユーザー入力を取得し、変換を実行します
      • ShowResults():結果を表示します
        • GetInput():ユーザーから7文字を取得し、それらをMain()が参照によって渡した7つの変数に格納します。
        • ProcessInput():それぞれに対してToDigit()を呼び出し、参照によって各文字変数を渡し、これらのコードの1つを値でMain()に返します:o入力エラーがなかった場合は0o入力エラーがあった場合は-1 "

プログラムは、標準の電話のキーパッドレイアウトに従って変換を実行します。

基本的に、2秒のA、B、C 3はD、E、Fなどであり、次にD、E、Fは3などです。

現在、入力以外は何もしていませんが、文字として保存されるのではなく、文字列としてのみ保存されます。CasesステートメントとIfステートメントを使用して2つの割り当てを行っただけなので、この割り当ては本当に嫌いです。

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ステートメントでそれらの文字を定義するにはどうすればよいですか?

4

5 に答える 5

1

クラスで取り上げられていない辞書クラスは使用しないでください。この宿題はクラスで学んだツールを使用して解決する必要があるため、課題の成績が悪い可能性があります。

これを解決するには 2 つの方法があります。

  1. switch人が入力できるすべての文字または数字についてステートメントを作成します。caseこれは、アルファベットのすべての文字を入力してそれに対応する数字を入力すると、悪い成績になる可能性がありますが、case「フォールスルー」などのステートメントの機能の一部を使用すると (リンクなし、研究に任せます)それは何ですか)あなたはおそらく良い成績を得るでしょう。

  2. これもifステートメントで行うことができ、ポイント 1 と同様に、for every エントリを作成すると悪い点が得られますが、1 つifで解決する方法を理解できれば、良い点が得られる可能性があります。A, B, C, and 1if


各文字を個別に取得する方法についての回答を提供します。これは、レッスンの目的ではないと思います。最も簡単な方法は、 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;
}

また、別のフリービーとして、文字列を foreach に入力する前にToUpperInvariant()を実行し、大文字のみをチェックする必要があります。

于 2012-08-07T01:06:37.767 に答える
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"
于 2012-08-07T01:04:45.143 に答える
0

これは宿題なので、いくつかの手順を実行する必要があります。

  1. 電話のキーパッドに対応する文字から数字へのマップを作成する
  2. 入力された文字列の各文字をループします。
    1. 数値(整数)の場合は、文字>数値マッピングで検索し、文字を出力します。
    2. 文字の場合は、同じ表を調べて、対応する数字を出力します。
    3. 2 つの条件に一致しない場合は、エラー メッセージを出力します。
于 2012-08-07T00:53:32.807 に答える
0

可能なすべての入力文字を目的の出力にマップする辞書を作成するだけです。入力時に、辞書に基づいて文字を置き換えます。

于 2012-08-07T00:56:50.897 に答える
0

これに応答しないか、正しい答えを選んで本当に申し訳ありませんが、最終的には自分で考え出しました. 私が非常に苦労した理由は、1(800)384-2347 に対していくつかの出力を作成し、最後の 4 つの数字を意味のあるさまざまな文字に変換する必要があると考えていたためです。しかし、それは単純なケースステートメントに過ぎませんでした。

于 2012-08-16T02:07:47.757 に答える