Reputation: 25
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();
}
}
}
I run this program and when i try to call the method in main method, The compiler says:
no overload method define for your
heavydeciCount
method
and program closes abnormally.
What am i doing wrong here?
Upvotes: 0
Views: 79
Reputation: 15320
Your method accepts 2 arguments:
public static void HeavyDeciCount(int firstNumber, int secondNumber)
You pass it 0:
HeavyDeciCount(); // no arguments are being passed
You probably wanted to have your code rearranged like so:
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
The problem the compiler is complaining about is that it expects to find an overloaded method to HeavyDeciCount
that accepts 0 arguments, but no such method exists.
Upvotes: 1
Reputation: 15623
You are not passing the parameters needed to your method. Call the method after getting firstNumber
and secondNumber
, and pass them to it.
So change the main method like this:
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);
}
Upvotes: 0