我在第20行收到异常错误,说用户输入的类型不正确,这就是我添加Convert类的原因。我试图根据用户的输入来读取/写入属性,以便将圆的半径作为构造函数中的参数接受。
using System;
using static System.Console;
namespace Project3
{
public class Program
{
static void Main(string[] args)
{
Circle userCircle = new Circle();
WriteLine("What is the radius of the circle?");
userRadius = Convert.ToDouble(ReadLine());
userCircle.Radius = Convert.ToDouble(ReadLine());
GetArea();
GetDiameter();
GetCircumference();
}
}
public class Circle
{
const double pie = 3.14159;
double area,
circumference,
diameter,
userRadius;
public double radius; //Data members
public Circle(double radiusOfCircle) //Accepts radius of the circle as an argument
{
radiusOfCircle = radius;
}
public double Radius //radius property set to default value of 0
{
get { return radius; }
set { radius = value; }
}
public Circle() //default constructor
{
}
double GetArea()
{
area = pie * userRadius * userRadius;
WriteLine("The Area is {0:##.##}", area);
return area;
}
double GetDiameter()
{
diameter = userRadius * 2;
WriteLine("The Diameter is {0:##.##}", diameter);
return diameter;
}
double GetCircumference()
{
circumference = 2 * pie * userRadius;
WriteLine("The Circumference is {0:##.##}", circumference);
return circumference;
}
}
答案 0 :(得分:1)
检查用户输入时,您应该使用Double.TryParse
这样的方法,而不是使用Convert.ToDouble
,如果它无法转换输入,则会引发异常。
Double number;
var value = Console.ReadLine();
if (Double.TryParse(value, out number))
Console.WriteLine(number);
else
Console.WriteLine("{0} is outside the range of a Double.");
检查:https://msdn.microsoft.com/en-us/library/3s27fasw%28v=vs.110%29.aspx