静力试验的主要方法

本文关键字:方法 | 更新日期: 2023-09-27 18:17:21

当我在不使用静态方法的情况下运行程序时,它会说…

运行解决方案…编译成功。示例测试:[- 1,3,- 4,5,1,- 6,2,1]好吧您的代码在语法上是正确的,并且在示例测试中正常工作。

当我使用静态方法时…

static void Main(string[] args)
    {
        int difference = new  Solution().solution(new int[] { -1, 3, -4, 5, 1, -6, 2, 1});
        Console.WriteLine(difference);
        Console.ReadKey();
    }

I was getting error…

运行解决方案…编译器输出:编译失败:2个错误,0个警告user.cs(16,24):错误CS0017: Program user.exe' has more than one entry point defined: SolutionWrapper.Main(string[])'cs(40,17):错误CS0017:程序user.exe' has more than one entry point defined: Solution.Main(string[])'检测到一些错误。

我正在看磁带平衡挑战,这就是我想做的,如果我删除静态void方法,就不会有错误....

static void Main(string[] args)
    {
        int difference = new  Program().solution(new int[] { -1, 3, -4, 5, 1, -6, 2, 1});
        Console.WriteLine(difference);
        Console.ReadKey();
    }
    public int solution(int[] A)
    {
        // write your code in C# 6.0 with .NET 4.5 (Mono)
        var length = A.Length;
        if (length == 1) return A[0];
        if (length == 2) return Math.Abs(A[0] - A[1]);
        var leftSum = 0;
        var rightSum = 0;
        for (var i = 0; i < length; i++)
        {
            rightSum += A[i];
        }
        var difference = int.MaxValue;
        for (var i = 0; i < length - 1; i++)
        {
            var value = A[i];
            leftSum += value;
            rightSum -= value;
            difference = Math.Min(difference, Math.Abs(rightSum - leftSum));
            if (difference == 0) return 0;
        }
        return difference;
    }

是不是不使用静态方法?

静力试验的主要方法

这样做…会成功的。

using System;
class Solution {
  public int solution(int[] A) {
    // write your code in C# 6.0 with .NET 4.5 (Mono)
    var length = A.Length;
    if (length == 1) return A[0];
    if (length == 2) return Math.Abs(A[0] - A[1]);
    var leftSum = 0;
    var rightSum = 0;
    for (var i = 0; i < length; i++)
    {
        rightSum += A[i];
    }
    var difference = int.MaxValue;
    for (var i = 0; i < length - 1; i++)
    {
        var value = A[i];
        leftSum += value;
        rightSum -= value;
        difference = Math.Min(difference, Math.Abs(rightSum - leftSum));
        if (difference == 0) return 0;
    }
    Console.WriteLine(difference);
    return difference;
 }
}

你得到这个错误,因为你有两个static public void Main()的定义在你的代码。

由于其中一个是自动生成的,您可能无法轻松地删除它。您可以通过在项目属性>应用程序设置中设置项目的启动对象来解决这个问题,或者-如果手动构建-使用/main编译器选项指定您想要的Main的路径作为入口点。