C# 控制台应用程序中断

本文关键字:中断 应用程序 控制台 | 更新日期: 2025-02-19 08:15:58

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace heavynumbers2
{
    class Program
    {
        static void Main(string[] args)
        {
            HeavyDeciCount();
            int firstNumber;
            int secondNumber;
            Console.Write("Enter First Number: ");
            firstNumber = int.Parse(Console.ReadLine());
            Console.Write("Enter Second Number: ");
            secondNumber = int.Parse(Console.ReadLine());
        }
        public static void HeavyDeciCount(int firstNumber, int secondNumber)
        {
            var totalHeavyCount = 0;
            for (int i = firstNumber; i <= secondNumber; i++)
            {
                var avg = i.ToString()
                    .Select(o => Convert.ToInt32(o.ToString()))
                    .ToArray()
                    .Average();
                var isHeavy = false;
                if (avg > 7)
                {
                    isHeavy = true;
                    totalHeavyCount++;
                }
                Console.WriteLine("HeavyNumbers" + "Average" + "IsHeavy");
                Console.WriteLine(i + "    " + avg + "    " +    (isHeavy ? "Yes" : "No"));
            }
            Console.WriteLine("Total Heavy Count: " + totalHeavyCount);
            Console.WriteLine("Press Enter to Close Program ");
            Console.ReadLine();
        }
    }
}

我运行这个程序,当我尝试在main方法中调用该方法时,编译器说:

没有为heavydeciCount方法定义重载方法

程序异常关闭。

我在这里做错了什么?

C# 控制台应用程序中断

您的方法接受 2 个参数:

public static void HeavyDeciCount(int firstNumber, int secondNumber)

你传递它 0:

HeavyDeciCount(); // no arguments are being passed

您可能希望像这样重新排列代码:

int firstNumber;
int secondNumber;
Console.Write("Enter First Number: ");
firstNumber = int.Parse(Console.ReadLine());
Console.Write("Enter Second Number: ");
secondNumber = int.Parse(Console.ReadLine());
HeavyDeciCount(firstNumber, secondNumber); // you call the method with 2 numbers after you already have them

编译器抱怨的问题是,它希望找到一个接受 0 参数的重载方法来HeavyDeciCount,但不存在这样的方法。

您没有将所需的参数传递给您的方法。在获取firstNumbersecondNumber后调用该方法,并将它们传递给它。

所以像这样更改主方法:

    static void Main(string[] args)
    {
        int firstNumber;
        int secondNumber;
        Console.Write("Enter First Number: ");
        firstNumber = int.Parse(Console.ReadLine());
        Console.Write("Enter Second Number: ");
        secondNumber = int.Parse(Console.ReadLine());
       HeavyDeciCount(firstNumber,secondNumber);
    }