如何检查字符串数组的偶数位置是否只有数字?

时间:2019-11-01 18:50:12

标签: c# calculator

我正在学习我的第一门编程语言-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
    }
}

很抱歉,这个问题太简单了,但是我非常感谢您的帮助!

2 个答案:

答案 0 :(得分:0)

我很抱歉为您的最新回应。 Rufus L(https://stackoverflow.com/users/2052655/rufus-l)的评论有助于提供我当时需要的解决方案。

十进制温度; if(decimal.TryParse(calculatorInput [index] .ToString(),超出温度)){} TryParse方法采用一个字符串和一个out参数,而您缺少该参数。但是有更好的方法来做您想要的。 – Rufus L 19年11月1日在18:58

所有答案和评论对我的发展都非常有帮助。计算器现在已经完成了,尽管总是有改进的余地。

答案 1 :(得分:-1)

您可以专注于操作员进行验证。它们必须始终在输入字符串内。如果您的计算器接受负数,则减号运算符是一个例外。但是如果计算器是基本的并且不支持负数,那么下面的代码应足以进行操作员验证:

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语句。 在此代码块之后,您可以放置​​计算代码。我认为对于一个新学习者来说就足够了。