我想让用户输入长度
和宽度
,这样我们就可以计算矩形的面积。我有两个类是Program
和Rectgle
。问题是,当我试图运行此代码时,有一个错误:
程序有多个入口点
如何解决这个问题?
这是我的代码:
using System;
using System.Collections.Generic;
namespace rec_oop_20211025_E3
{
class Program
{
static void Main(string[] args)
{
List<Rectangle> recs = new List<Rectangle>();
ConsoleColor errColor = ConsoleColor.DarkRed; // to make the error part red in color
ConsoleColor defColor = Console.BackgroundColor; // defColor is default color
start: // use start to run many times
Console.Write("Input sides (eg. 5,6): ");
string line = Console.ReadLine();
Rectangle rec = new Rectangle();
try
{
rec.SetSides(line, ",");
Console.WriteLine($"{rec.GetInfo()}");
recs.Add(rec);
}
catch(Exception ex)
{
Console.BackgroundColor = errColor;
Console.WriteLine($"Error > {ex.Message}");
Console.BackgroundColor = defColor;
}
Console.WriteLine("\nEsc to stop, any key for another rectangle...");
char key = Console.ReadKey(true).KeyChar; // with start we need this
if (key != (char)ConsoleKey.Escape)
goto start;
Console.WriteLine();
Console.BackgroundColor = ConsoleColor.DarkGreen;
double total = 0;
foreach(var r in recs)
{
total += r.GetArea();
Console.WriteLine(r.GetInfo());
}
Console.BackgroundColor = ConsoleColor.DarkBlue;
Console.WriteLine($"\nTotal = {total:n3}");
Console.BackgroundColor = defColor;
}
}
public class Rectangle
{
//static methods
public static void CheckSides(double width, double length)
{
if (width < 0 || length < 0)
throw new Exception($"Rectangle sides( {width}, {length}) are invalid.");
}
public static void TryParse(string data, string delimiter, out double width, out double length)
{
try
{
string[] arr = data.Split(delimiter);
width = double.Parse(arr[0]);
length = double.Parse(arr[1]);
}
catch (Exception)
{
throw new Exception($"Given data \"{data}\" are invalid.");
}
}
//intance fields
private double wd;
private double lng;
//instance methods
public void SetSides(string data, string delimiter)
{
double width, length;
Rectangle.TryParse(data, delimiter, out width, out length);
Rectangle.CheckSides(width, length);
wd = width;
lng = length;
}
public string GetInfo() => $"width={wd}, length={lng} > area={GetArea():n3}";
//public double GetArea() { return wd * lng; }
public double GetArea() => wd * lng;
}
}
}
这是什么-错误是非常描述性的。尝试搜索(CtrlShiftF)Main(
(只有这个文本main
,然后是1个圆括号)-您应该会找到另一个隐藏在某个地方的函数,该函数定义了无效main-这不可能。只有1静态无效Main()
可能存在。删除另一个,现在你的应用程序可以编译。如果您有其他类并不重要——唯一重要的是名为Main
的函数只能是一个
另外,如果我的回答还不够-你还有一些问题-请对你的代码做一个简单的最小克隆,并使其成为Github repo-这样我们就可以查看代码了
您可以查看有关此错误的官方文档:
要解决此错误,可以删除代码中除一个以外的所有主要方法,也可以使用StartupObject编译器选项指定要使用的主要方法。
您也可以使用命令行上的/main
开关指示包含相应入口点的类型。