我刚刚编写了我的第一个C#控制台应用程序,我还是初学者。无论如何,我尝试了下面的代码,它似乎工作,它用于解决二次方程。我想为用户输入字符串而不是整数的情况添加代码,并提供错误消息,告知如何实现此操作?
namespace Quadratic_equation
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("welcome to seyi's quadratic calculator!!!");
Console.Write("a:");
double a = Convert.ToInt32(Console.ReadLine());
Console.Write("b:");
double b = Convert.ToInt32(Console.ReadLine());
Console.Write("c:");
double c = Convert.ToInt32(Console.ReadLine());
if ((b * b - 4 * a * c) < 0) {
Console.WriteLine("There are no real roots!");
}
else {
double x1 = (-b + Math.Sqrt((b*b)-4*a*c)) /2*a;
double x2 = (-b + Math.Sqrt((b*b)-4*a*c)) /2*a;
Console.WriteLine("x:{0}",x1);
Console.WriteLine("y:{0}",x2);
}
Console.ReadKey();
}
}
}
答案 0 :(得分:2)
您可以使用Int32.TryParse
method检查字符串是否为有效整数。此方法为您的会话返回boolean
值是否成功。
将数字的字符串表示形式转换为32位有符号 整数当量。返回值表示是否转换 成功了。
而且我不明白为什么要保持double
方法的返回值为int a;
string s = Console.ReadLine();
if(Int32.TryParse(s, out a))
{
// Your input string is a valid integer.
}
else
{
// Your input string is not a valid integer.
}
。这些因素(a,b,c)应该是整数,而不是双倍。
Int32.TryParse(string, out int)
此{{1}}重载使用Convert.ToInt32
作为默认值。这意味着您的字符串可以包含 之一
答案 1 :(得分:1)
int number;
bool result = Int32.TryParse(value, out number);
if (result)
{
Console.WriteLine("Converted '{0}' to {1}.", value, number);
}
else
{
if (value == null) value = "";
Console.WriteLine("Attempted conversion of '{0}' failed.", value);
}
答案 2 :(得分:1)
在try-catch
循环中使用do-while
块:
bool goToNextNum = false;
do
{
try
{
double a = Convert.ToInt32(Console.ReadLine());
goToNextNum = true;
}
catch
{
Console.WriteLine("Invalid Number");
}
} while (goToNextNum == false);
这将循环,直到a
为有效数字。