2016-05-07 215 views
0
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(); 
     } 
    } 
} 

我运行这个程序,当我试图调用方法主要方法,编译器说:C#控制台应用程序中断?

没有重载方法定义你的heavydeciCount方法

和程序异常关闭。

我到底做错了什么?

回答

1

你的方法接受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 

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

+0

我传递INT firstNumber,诠释secondNumber作为参数,我不知道为什么它不接受。它们下面有红线。如果你知道如何解决它,请指导我。 –

+0

@BilalMujahid我编辑了我的答案,进一步的解释和代码将为你工作。还要阅读链接以了解方法重载。 – Idos

+0

现在如何打电话给该方法,可以通过输入方法来解释。 –

0

你不及格需要你的方法的参数。调用该方法获得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); 

    } 
+0

谢谢现在我已经想通了。亚历克斯我怎么能跟着你在这个网站上,当我有一些像这样的编程错误,我可以从你那里接受指导。 –

+0

我不认为在StackOverFlow上有任何关注选项。但你可以随时给我发电子邮件。我很乐意提供帮助。你可以找到我的个人资料 –

+0

好的,谢谢亚历克斯。 –