2016-05-07 214 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

好的,謝謝亞歷克斯。 –