2016-09-15 2 views
0

클래스의 경우 숫자 값을 equivalent로 변환해야하는 과제가 있습니다. 위로도 9999.C# 콘솔에 출력

사전 명령으로이 작업을 수행했지만 배열을 설정 한 후에는이를 수행 할 수 없습니다. 우리는 수업의 네 번째 주이므로 나에게 어렵다. 여기

내 배열 인

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"}; 

이 프로그램은이 잘 인식하는 것 같다,하지만 난 출력에 갈 때 코드가 아무것도 또는 충돌 말하지 않는다 (I가 만드는 변경에 따라.)

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- C에서 날카로운 단어로) – 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

감사합니다. 당장이 방법을 시도해 보겠습니다. –

관련 문제