Bilal Mujahid
Bilal Mujahid

Reputation: 25

C# Console Application breaks?

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

Answers (2)

Idos
Idos

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

Ghasem
Ghasem

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

Related Questions