Desarrollar una calculadora donde ingresas como texto la operación no es tan trivial, se requiere desglosar la operación en sub-operaciones en un árbol de expresiones. Tu estas aprovechando la función compute del DataTable que lo hace por ti, pero estas expresiones deben seguir reglas, no existe la multiplicación implícita, tal como en mismo C# tampoco existe. int resultado = 2(3+3); //ErrorEntonces me parece que la única solución posible es agregar ese * que falta, donde puedes usar un replace, para esto deberás buscar los posibles problemas, por ejemplo: Los número seguido de paréntesis: 0(,1(,2(...9( 2 paréntesis juntos, de cierre y apertura en ese orden: )( Entonces creas una función: private string AgregarMulti(string expresion) { return expresion .Replace(" ", "") //opcional: quitamos los espacios .Replace("0(", "0*(") .Replace("1(", "1*(") .Replace("2(", "2*(") .Replace("3(", "3*(") .Replace("4(", "4*(") .Replace("5(", "5*(") .Replace("6(", "6*(") .Replace("7(", "7*(") .Replace("8(", "8*(") .Replace("9(", "9*(") .Replace(")(", ")*("); }Y luego la llamas dt.Compute(AgregarMulti(expresion),"")Otra forma sería usar expresiones regulares para buscar los casos. (责任编辑:) |