当前位置: 首页 > 知识库问答 >
问题:

错误:程序有多个切入点

羊煜
2023-03-14

我想让用户输入长度宽度,这样我们就可以计算矩形的面积。我有两个类是ProgramRectgle。问题是,当我试图运行此代码时,有一个错误:

程序有多个入口点

如何解决这个问题?

这是我的代码:

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;
    }
}
}

共有2个答案

喻高寒
2023-03-14

您可以查看有关此错误的官方文档:

要解决此错误,可以删除代码中除一个以外的所有主要方法,也可以使用StartupObject编译器选项指定要使用的主要方法。

您也可以使用命令行上的/main开关指示包含相应入口点的类型。

柳正志
2023-03-14

这是什么-错误是非常描述性的。尝试搜索(CtrlShiftFMain((只有这个文本main,然后是1个圆括号)-您应该会找到另一个隐藏在某个地方的函数,该函数定义了无效main-这不可能。只有1静态无效Main()可能存在。删除另一个,现在你的应用程序可以编译。如果您有其他类并不重要——唯一重要的是名为Main的函数只能是一个

另外,如果我的回答还不够-你还有一些问题-请对你的代码做一个简单的最小克隆,并使其成为Github repo-这样我们就可以查看代码了

 类似资料:
  • 我已经看了其他类似的问题修复不工作这是我的代码。 附言:我是新来的,所以可能会犯愚蠢的错误。抱歉!如果有必要我会附上更多代码 控制台输出: 忽略on_消息回溯中的异常(上次调用):文件“C:\Users\OnlyMe\AppData\Roaming\Python\Python38\site packages\discord\client.py”,第333行,在on_运行事件等待coro(*args

  • 问题内容: 以下内容无法编译,并给出“非法前向引用”消息: 但是,以下内容会编译: 但是以下内容无法编译,并给出“非法前向引用”消息: 为什么InstanceInitialisation1不能编译StaticInitialisation和InstanceInitialisation2? 问题答案: JLS的第8.3.3节涵盖了这一点: 有时会限制使用其声明在文本后出现的类变量,即使这些类变量在范围

  • 使用加载时间编织,纯AspectJ。 我们有2个注释和,以及一些带注释的方法。 现在我正在为具有多个注释的定义自己的围绕方面: 这行不通。然而,捕获方法myMethod2可以很好地用于单个注释: 我只想捕获签名中同时存在时间和计数注释的方法,并且我想使用注释值。有人知道如何做到这一点吗?

  • 我正在开发基于spring+Hibernate的web应用程序。在这个应用程序中,我必须对数据库中的50000个可用记录进行计算。当前逻辑:- 循环0到50000(所有50000记录彼此独立) 选择第i个元素 对第i个元素执行计算(删除CALCULATION_TEMP表(如果存在),创建新表CALCULATION_TEMP并在CALCULATION_TEMP表中插入计算) 在步骤3表上进行一些计算

  • 昨天问了一个关于回文和Java的问题: Java回文程序(我是否在正轨上)? 在你的帮助下,我已经取得了一些进步(再次感谢你)。在测试代码之前,我还需要一件事的帮助。我正在使用Eclipse,我在一行上得到一个错误(我也将在下面的代码中包含这个错误作为注释)。我一直得到一个< I >“无法对数组类型String[]”调用charAt(int)。 有人知道这里发生了什么吗?我已经有一段时间没有使用J