[英]How do I set up exception handling for no input
这是我的程序,用于输入2个数字,然后由一个运算符进行数学运算并吐出答案(这要感谢先前的异步帮助)。 到目前为止,除了我什么都不输入的时候,其他所有东西都运行良好。 我试图让它说没有输入,然后再试一次,但是它崩溃了。 有人知道为什么吗? 提前致谢。
using System;
class Calculation
{
public static void Main(string[] data)
{
if (data.Length == 0)
{
Console.WriteLine("No input... Try again");
return;
}
double result;
if (!Double.TryParse(data[0], out result))
{
Console.WriteLine("Invalid input: " + data[0]);
return;
}
Console.WriteLine("Starting with number: " + result);
char op;
double number;
string errorMessage;
do
{
if (!TryGetData(out op, out number, out errorMessage))
{
Console.WriteLine("Invalid input: " + errorMessage);
continue;
}
switch (op)
{
case '+':
result += number;
break;
case '-':
result -= number;
break;
case '*':
result *= number;
break;
case '/':
result /= number;
break;
default:
Console.WriteLine("Done");
continue;
}
Console.WriteLine("Result = " + result.ToString());
} while (Char.ToLower(op) != 'q');
}
static bool TryGetData(out char anOperator, out double aNumber, out string message)
{
aNumber = 0;
message = null;
Console.Write("Enter an operator and a number or 'q' to quit: ");
var line = Console.ReadLine();
anOperator = line[0];
if (anOperator != 'q' && anOperator != 'Q')
{
if (line.Length <= 2)
{
message = "Enter an operator followed by a space and then a number.";
return false;
}
var isValidNumber = Double.TryParse(line.Substring(2), out aNumber);
if (!isValidNumber)
{
message = "Invalid input: " + line.Substring(2);
return false;
}
if (isValidNumber && (anOperator == '/' && aNumber == 0))
{
message = "Cannot divide by 0.";
return false;
}
if (line[1] != ' ')
{
message = "Make sure to put a space between operator and number.";
return false;
}
}
return true;
}
}
您要告诉它检查是否为null的变量的length属性。 如果要删除,则可以检查是否为空,然后检查其长度。
C#本质上是一种短路语言,如果if语句的第一部分为false(或true),则其他部分将不进行评估。
if (data == null || data.length == 0)
{
Console.WriteLine("No input... Try again");
return;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.