2010-08-31 5 views
0

quelqu'un peut-il me aider à débugger ... j'ai les erreurs suivantes lors de l'exécution du code bolow ..Conversion d'un nombre entier en anglais des mots en utilisant C# .Net

Error 1 Cannot implicitly convert type 'string' to 'long' 
Error 2 The name 'inputNum' does not exist in the current contex 

    protected void Button1_Click(object sender, EventArgs e) { 
     var englishTranslation = IntegerToWords(inputNum); 
    } 

    public string IntegerToWords(long inputNum) { 
     int dig1, dig2, dig3, level = 0, lasttwo, threeDigits; 

     var retval = ""; 
     var x = ""; 
     string[] ones = { 
          "zero", 
          "one", 
          "two", 
          "three", 
          "four", 
          "five", 
          "six", 
          "seven", 
          "eight", 
          "nine", 
          "ten", 
          "eleven", 
          "twelve", 
          "thirteen", 
          "fourteen", 
          "fifteen", 
          "sixteen", 
          "seventeen", 
          "eighteen", 
          "nineteen" 
         }; 
     string[] tens = 
      { 
       "zero", 
       "ten", 
       "twenty", 
       "thirty", 
       "forty", 
       "fifty", 
       "sixty", 
       "seventy", 
       "eighty", 
       "ninety" 
      }; 
     string[] thou = 
      { 
       "", 
       "thousand", 
       "million", 
       "billion", 
       "trillion", 
       "quadrillion", 
       "quintillion" 
      }; 

     var isNegative = false; 
     if (inputNum < 0) { 
      isNegative = true; 
      inputNum *= -1; 
     } 

     if (inputNum == 0) 
      return ("zero"); 

     var s = inputNum.ToString(); 

     while (s.Length > 0) { 
      // Get the three rightmost characters 
      x = (s.Length < 3) ? s : s.Substring(s.Length - 3, 3); 

      // Separate the three digits 
      threeDigits = int.Parse(x); 
      lasttwo = threeDigits%100; 
      dig1 = threeDigits/100; 
      dig2 = lasttwo/10; 
      dig3 = (threeDigits%10); 

      // append a "thousand" where appropriate 
      if (level > 0 && dig1 + dig2 + dig3 > 0) { 
       retval = thou[level] + " " + retval; 
       retval = retval.Trim(); 
      } 

      // check that the last two digits is not a zero 
      if (lasttwo > 0) { 
       if (lasttwo < 20) // if less than 20, use "ones" only 
        retval = ones[lasttwo] + " " + retval; 
       else // otherwise, use both "tens" and "ones" array 
        retval = tens[dig2] + " " + ones[dig3] + " " + retval; 
      } 

      // if a hundreds part is there, translate it 
      if (dig1 > 0) 
       retval = ones[dig1] + " hundred " + retval; 

      s = (s.Length - 3) > 0 ? s.Substring(0, s.Length - 3) : ""; 
      level++; 
     } 

     while (retval.IndexOf(" ") > 0) 
      retval = retval.Replace(" ", " "); 

     retval = retval.Trim(); 

     if (isNegative) 
      retval = "negative " + retval; 

     return (retval); 
    } 

Je suis nouveau à la programmation ...

+0

ressemble à un test à l'entrevue – Arseny

+0

Me rappelle de ma première année à l'université. Très nostalgique. –

Répondre

0

Les erreurs ne sont pas des erreurs logiques.
1. Vérifiez le numéro de ligne où l'erreur s'est produite. Utilisez long.Parse (str) pour convertir la chaîne en long.
2. La variable inputNum n'est pas déclarée dans la fonction Button1_Click. Déclarez-le, attribuez-lui la valeur (à partir d'une zone de texte peut-être?) Qui doit être convertie.

+0

merci .. votre réponse m'a été utile :) – Priya

+0

si vous n'attendez pas une meilleure réponse, pourriez-vous s'il vous plaît sélectionner ma réponse comme la bonne (le symbole de la tique sur la gauche), j'ai besoin d'un peu de réputation, je vouloir ajouter une prime à une question :) – lalli