2016-09-15 17 views
0

クラスIには、数値を等価語に変換したいという課題があります。あまりにも9999。C#コンソールに出力

私は辞書コマンドでこれを達成しましたが、配列を設定した後ではできません。 私たちはクラスの第4週なので、私にとっては難しいです。ここで

は私の配列です

string[] ToWordsOne = new string[10] { "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"}; 
string[] ToWordsTen = new string[8] { "twenty", "thirty", "fourty", "fifty", "sixty", "seventy", "eighty", "ninety"}; 
string[] ToWordsTeens = new string[9] { "eleven", "twelve", "thirteen", "fourteen", "fifteen", "sixteen", "seventeen", "eighteen", "nineteen"}; 

プログラムは、これがうまく認識しているようだが、私は出力に行くときのコードが、それは何かクラッシュ言いません(私が行った変更に応じて。)

int i = 0; 
     string output = ""; 
     while (i <= input.Length) 
     { 
      if (i == (input.Length)) 
      { 
       output = output + " " + ToWordsOne[i]; 
      } 
      if (i == (input.Length)) 
      { 
       if (input == 1) 
       { 
        output = ToWordsTeens[i]; 
       } 

       else 
       { 
        output = output + ToWordsTen[i]; 
       } 

      } 
      if (i == (input.Length)) 
      { 
       output = output + ToWordsOne[i] + " hundred" + " "; 
      } 
      if (i == (input.Length)) 
      { 
       output = ToWordsOne[i] + " thousand" + " "; 
      } 
      i++; 

これは辞書から結果を出力するために使用したコードです。私は ".length"メソッドを使用できないことを知っています。しかし、私はそこからどこに行くのか分からない。

+0

ここには非常に良い例があります。 http://www.blackbeltcoder.com/Articles/strings/converting-numbers-to-words – active92

+2

[C#への数値の変換]の可能な複製(http://stackoverflow.com/questions/2729752/converting-numbers- – JeetDaloneboy

+0

可能な重複 - [どのように整数をその言語表現に変換できますか?](http://stackoverflow.com/questions/554314/how-can-i-convert-an-整数からその言葉への表現)。 – ram

答えて

1

この投稿ごとに:converting-numbers-in-to-words-c-sharp次のように数字をワードに変換できます。

public static string NumberToWords(int number) 
    { 
     if (number == 0) 
      return "zero"; 

     if (number < 0) 
      return "minus " + NumberToWords(Math.Abs(number)); 

     string words = ""; 

     if ((number/1000000) > 0) 
     { 
      words += NumberToWords(number/1000000) + " million "; 
      number %= 1000000; 
     } 

     if ((number/1000) > 0) 
     { 
      words += NumberToWords(number/1000) + " thousand "; 
      number %= 1000; 
     } 

     if ((number/100) > 0) 
     { 
      words += NumberToWords(number/100) + " hundred "; 
      number %= 100; 
     } 

     if (number > 0) 
     { 
      if (words != "") 
       words += "and "; 

      var unitsMap = new[] { "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "ten", "eleven", "twelve", "thirteen", "fourteen", "fifteen", "sixteen", "seventeen", "eighteen", "nineteen" }; 
      var tensMap = new[] { "zero", "ten", "twenty", "thirty", "forty", "fifty", "sixty", "seventy", "eighty", "ninety" }; 

      if (number < 20) 
       words += unitsMap[number]; 
      else 
      { 
       words += tensMap[number/10]; 
       if ((number % 10) > 0) 
        words += "-" + unitsMap[number % 10]; 
      } 
     } 

     return words; 
    } 
+0

ありがとう、私はこれをすぐに試してみます。 –

関連する問題