2016-05-07 14 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(); 
     } 
    } 
} 

Ich betreibe dieses Programm und wenn ich versuche, das Verfahren in Haupt-Methode aufrufen, Der Compiler sagt:C# Konsolenanwendung bricht ab?

keine Überlastung Methode für Ihre heavydeciCount Methode definieren

und Programm abnorm schließt.

Was mache ich hier falsch?

Antwort

1

Ihre Methode akzeptiert zwei Argumente:

public static void HeavyDeciCount(int firstNumber, int secondNumber) 

geben Sie es 0:

HeavyDeciCount(); // no arguments are being passed 

Sie wollten wahrscheinlich Ihr Code wie so neu angeordnet haben:

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 

Das Problem der Compiler beschweren sich über ist, dass es erwartet, eine overloaded Methode zuzu finden 10, die 0 Argumente akzeptiert, aber keine solche Methode existiert.

+0

I int bin vorbei firstnumber, int Second als Parameter und ich weiß nicht, warum es zu akzeptieren ist nicht:

So die wichtigste Methode, wie dies ändern. Sie haben eine rote Linie darunter. Wenn du weißt, wie du es lösen kannst, bitte führe mich. –

+0

@BilalMujahid Ich habe meine Antwort mit weiteren Erklärungen und Code bearbeitet, die für Sie arbeiten. Lesen Sie auch den Link, um das Überladen von Methoden zu verstehen. – Idos

+0

Jetzt, wie man die Methode freundlich nennt, konnten Sie bitte erklären, indem Sie die Methode eingeben. –

0

Sie übergeben die für Ihre Methode erforderlichen Parameter nicht. Rufen Sie die Methode auf, nachdem Sie firstNumber und secondNumber erhalten haben, und leiten Sie sie an sie weiter.

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

Danke Jetzt habe ich herausgefunden. Alex, wie kann ich dir auf dieser Website folgen, wenn ich einige Programmierfehler wie diese habe, kann ich dann Anleitung von dir nehmen. –

+0

Ich glaube nicht, dass StackOverFlow eine weitere Option hat. Aber Sie können mir jederzeit eine E-Mail schicken. Ich würde glücklich sein zu helfen. Sie können dann E-Mail auf meinem Profil finden –

+0

Ok Danke Alex. –

Verwandte Themen