Как проверить, что четные позиции массива строк имеют только цифры? - PullRequest
0 голосов
/ 01 ноября 2019

Я изучаю мой первый в мире язык программирования - C #.

Я делаю свой первый проект в моем ученичестве, который обучает меня C #. Он предназначен для производства базового калькулятора.

Базовый калькулятор принимает строковый ввод и выдает результат. Например, введите: «5 + 5». Ответ будет 10 в десятичном формате.

Однако, часть моей проверки состоит в том, чтобы четные индексы массива строк были только числами, в то время как нечетные индексы массива строк могут быть только операторами "+"," - "," * "," / ". Как мне это сделать?

Я пытался сделать это здесь, но я изо всех сил:

for (int index = 0; index <= calculatorInput.Length; index++)
{
    if (index % 2 == 0)
    {
        if (Decimal.TryParse(calculatorInput[index]))
        {
            throw new CalculatorException("Even indexes must contain a number");
        }
        //check for number
    }
    else if (//code here)
    {
        throw new CalculatorException("Odd indexes must contain an operator");
        //check for operator
    }
}

Извините, если этот вопрос слишком прост, но я был бы очень признателен за помощь!

1 Ответ

0 голосов
/ 01 ноября 2019

Вы можете сосредоточиться на операторах для проверки. Они всегда должны быть где-то внутри входной строки. Оператор минус здесь исключение, если ваш калькулятор принимает отрицательные числа. Но , если калькулятор является базовым и не поддерживает отрицательные числа, поэтому приведенного ниже кода должно быть достаточно для проверки оператора:

string inputString = "10 + 10";

int index = inputString.IndexOf('+');
if ((index > -1) && ((index == 0) || (index ==inputString.Length-1)))
    throw new CalculatorException("YOUR ERROR MESSAGE");

index = inputString.IndexOf('*');
if ((index > -1) && ((index == 0) || (index ==inputString.Length-1)))
    throw new CalculatorException("YOUR ERROR MESSAGE");

index = inputString.IndexOf('/');
if ((index > -1) && ((index == 0) || (index ==inputString.Length-1)))
    throw new CalculatorException("YOUR ERROR MESSAGE");

index = inputString.IndexOf('-');
if ((index > -1) && ((index == 0) || (index ==inputString.Length-1)))
    throw new CalculatorException("YOUR ERROR MESSAGE");

///Calculation code

Для повышения читабельности я сделалне создавать вложенный оператор if-else. После этого блока кода вы можете разместить свой код расчета. Я думаю, что это достаточно для нового ученика.

...