#c#
#c#
Вопрос:
привет, ребята, у меня есть массив под названием tblCeMaintMatrix.toArray()) с результатом :
[0]: { xValue = 0, Operator = 43 ' ' }
[1]: { xValue = 1, Operator = 43 ' ' }
[2]: { xValue = 12, Operator = 45 '-' }
я выполнил цикл foreach, чтобы решить эту проблему, однако я столкнулся с некоторыми ошибками. Я думаю, что я перепутал логику для этого..
foreach (var a in tblCeMaintMatrix.ToArray())
{
{
value = operate((a.Operator).ToString(),a.xValue.Value );
}
decimal value2 = value;
}
private decimal operate(String a, Decimal value)
{
Decimal Value = 0;
if (a == " ")
{
Value = value value;
}
if (a == "-")
{
Value= value - value;
}
if (a == "*")
{
Value = value * value;
}
if (a == "/")
{
Value = value / value;
}
return Value;
}
моя проблема в том, что
a) что делает это :
0 0 = 0
1 1 = 2
12 — 12 = 0
вместо 0 1 -12.
б) значение не сохраняется.
как я могу изменить это, чтобы решить проблему? Спасибо
Ответ №1:
Непроверенный код, хотелось бы, чтобы он был правильным..
decimal result = 0;
foreach (var a in tblCeMaintMatrix.ToArray())
{
{
result = operate((a.Operator).ToString(),a.xValue.Value,result);
}
}
private decimal operate(String a, Decimal value, Decimal result)
{
switch (a)
{
case " ": result = value; break;
case "-": result -= value; break;
case "*": result *= value; break;
case "/": result /= value; break;
default: result = value; break;
}
return resu<
}
РЕДАКТИРОВАТЬ чтобы игнорировать первый оператор, я думаю, вам нужно установить для вашего первого оператора значение empty, например:
[0]: { xValue = 0, Operator = '' }
[1]: { xValue = 1, Operator = 43 ' ' }
[2]: { xValue = 12, Operator = 45 '-' }
и посмотрите модифицированный метод Operate.
Комментарии:
1. привет, Дэнни, есть ли способ для меня игнорировать оператор первого индекса массива? чтобы составить уравнение , подобное этому 0 1 -12 , а не 0 0 1 — 12
Ответ №2:
Прямо сейчас вы передаете только одно значение своему operate
методу и используете его в качестве обоих операндов. Вам также необходимо передать в функцию текущий результат вашего кода:
Decimal total = 0;
foreach (var a in tblCeMaintMatrix.ToArray())
{
{
total = operate((a.Operator).ToString(),total, a.xValue.Value );
}
decimal value2 = value;
}
private decimal operate(String a, Decimal left, Decimal right)
{
Decimal Value = 0;
if (a == " ")
{
Value = left right;
}
if (a == "-")
{
Value= left - right;
}
if (a == "*")
{
Value = left * right;
}
if (a == "/")
{
Value = left / right;
}
return Value;
}
Неясно, что вы используете value2
для представления в вашей исходной функции.