C# 圆集与圆集

C# 圆集与圆集,c#,linq,get,set,C#,Linq,Get,Set,我有工作代码,set和get应该不允许负输入。但是,当运行此操作时,负输入仍然返回结果,我缺少什么导致仍然计算负值?另外,我将如何引入一个允许用户计算多个圆的函数 using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace console { class Program { static void Main(string[] ar

我有工作代码,set和get应该不允许负输入。但是,当运行此操作时,负输入仍然返回结果,我缺少什么导致仍然计算负值?另外,我将如何引入一个允许用户计算多个圆的函数

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace console
{
    class Program
    {

        static void Main(string[] args)
        {

            Console.Write("What is the circle’s radius: ");
            double radius = Convert.ToDouble(Console.ReadLine());
            Circle ans = new Circle(radius);


            Console.WriteLine("The area of the circle is " + ans.getArea);
            Console.WriteLine("The Diameter of the circle is " + ans.getDiameter);
            Console.WriteLine("The Circumference of the circle is " + ans.getCircumference);

            Console.Write("Enter any character to quit program. ");
            double stop = Console.Read();

        }
    }
}
这就是方法和类:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace console
{
    class Circle
    {

        public double radius;
        public const double PI = 3.14159;

        public Circle(double r)
        {
            radius = r;
        }

        public Circle()
        {
            radius = 0.0;
        }

        public double getDiameter
        {
            get
            {
                return radius * 2;
            }

        }


        public double getArea
        {
            get
            {
                return PI * radius * radius;
            }

        }
        public double getCircumference
        {
            get
            {
                return 2 * PI * radius;
            }

        }
        // property Radius 
        public double Radius
        {
            get
            {
                return radius;
            }

            set
            {
                // ensure non-negative radius value 
                if (value >= 0)
                    radius = value;
            }
        }
    }
}

在构造函数中,您正在更改
公共
字段的值,而不是
属性
,因此您的
setter
方法永远不会执行。我认为您应该将字段
设置为私有
,然后像这样更改构造函数:

private double radius;
public Circle(double r)
{
    Radius = r;
}
此外,当用户尝试将负值指定给
半径时,您可能希望在setter方法中显示消息或引发异常

另外,我将如何引入一个允许用户计算多个圆的函数

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace console
{
    class Program
    {

        static void Main(string[] args)
        {

            Console.Write("What is the circle’s radius: ");
            double radius = Convert.ToDouble(Console.ReadLine());
            Circle ans = new Circle(radius);


            Console.WriteLine("The area of the circle is " + ans.getArea);
            Console.WriteLine("The Diameter of the circle is " + ans.getDiameter);
            Console.WriteLine("The Circumference of the circle is " + ans.getCircumference);

            Console.Write("Enter any character to quit program. ");
            double stop = Console.Read();

        }
    }
}
您可以使用
循环
。将代码放入循环中并声明计数器

for(int i = 0; i <= 5; i++)
{
    /* put your code here, get the input perform the calculation
     and display the message */
}

这就解决了,谢谢。现在,我将如何询问用户是否想要做另一个循环,或者如果输入一个字母,它将返回到程序的开头?我知道这将通过main方法完成,但从那以后我就迷路了。我尝试了你对循环的建议,是否有这样一种情况,即用户可以通过y/n来定义何时停止,而不是设置一定数量的尝试?y表示继续,n表示停止程序?@user3429402那么你有主意了,为什么不试试呢?