我正在学习我的第一门编程语言-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
}
}
很抱歉,这个问题太简单了,但是我非常感谢您的帮助!
答案 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语句。 在此代码块之后,您可以放置计算代码。我认为对于一个新学习者来说就足够了。