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
方法定义重载方法
程序异常关闭。
我在这里做错了什么?
您的方法接受 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
,但不存在这样的方法。
您没有将所需的参数传递给您的方法。在获取firstNumber
和secondNumber
后调用该方法,并将它们传递给它。
所以像这样更改主方法:
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);
}