2017-05-28 2 views
0

Ich versuche, meine Funktion zu konvertieren, die eine RomanNumeral-Eingabe verwendet, um es als Dezimalwert aus JS in C# auszugeben, aber irgendwie bin ich stecken und brauche wirklich Ratschläge, wie diese Arbeit zu machen.Versuch, JS-Funktion in C# -Funktion zu konvertieren

using System; 
using System.Collections.Generic; 

class solution 
{ 

static int romanToDecimal(string romanNums) 
{ 
    int result = 0; 
    int [] deci = {1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1}; 
    string [] roman = {"M", "CM", "D", "CD", "C", "XD", "L", "XL", "X", "IX", "V", "IV", "I"}; 

    for (var i = 0; i < deci.Length; i++) 
    { 
     while (romanNums.IndexOf(roman[i]) == 0) 
     { 
      result += deci[i]; 

      romanNums = romanNums.Replace(roman[i], " "); 
     }            
    }             
    return result;         
} 

static void Main() 
{ 

Console.WriteLine(romanToDecimal("V")); //Gibt 5 aus. 
Console.WriteLine(romanToDecimal("XIX")); // Gibt 19 aus. 
Console.WriteLine(romanToDecimal("MDXXVI"));// Gibt 1526 aus. 
Console.WriteLine(romanToDecimal("MCCCXXXVII"));// Gibt 1337 aus. 
} 

} 
+1

Bitte erläutern * warum * der aktuelle Code nicht funktioniert – Rob

+0

Ich glaube nicht, XD 90 – RJM

+0

Es sollte XC statt – Yatin

Antwort

2

Ersetzen funktioniert anders in C#, verwenden Sie die ersten paar Zeichen entfernen String übereinstimmt, gefunden

static int romanToDecimal(string romanNums) 
    { 
     int result = 0; 
     int[] deci = { 1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1 }; 
     string[] roman = { "M", "CM", "D", "CD", "C", "XD", "L", "XL", "X", "IX", "V", "IV", "I" }; 

     for (var i = 0; i < deci.Length; i++) 
     { 
      while (romanNums.IndexOf(roman[i]) == 0) 
      { 
       result += deci[i]; 

       romanNums = romanNums.Substring(roman[i].Length); 
      } 
     } 
     return result; 
    } 
+0

Vielen Dank! –

Verwandte Themen