2016-10-07 5 views
2

Mein Ziel ist es, die Funktionen zu definieren und sie dann aufzurufen, wie ich brauche. Ich modelliere meinen Code von ähnlichen Fragen, die hier gestellt werden. Aber ich definiere niemals die Begriffe im ersten Teil des Codes und dann kann ich nicht herausfinden, wie ich sie im zweiten Teil ansprechen soll. Ich habe die Ressourcen in meinem Buch und online ausgeschöpft.Definieren und Aufrufen von Funktionen

Wenn jemand mir etwas klarer erklären könnte, wie man die anderen Methoden anruft, würde es sehr geschätzt werden.

Hier ist mein Code:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 

namespace FunctionCalls 
{ 
    class Functions 
    { 
     static public double addNumbers(double number1, double number2) 
     { 
     double result1 = number1 + number2; 
     return result1; 
     } 

     static public double subtractNumbers(double number1, double number2) 
     { 
     double result2 = number1 - number2; 
     return result2; 
     } 

     static public double avgNumbers(double number1, double number2) 
     { 
     double result3 = (number1 + number2)/2; 
     return result3; 
     } 

     public static void Main(String[] args) 
     { 
     Functions.addNumbers(result1); 
     Functions.subNumbers(result2); 
     Functions.avgNumbers(result3); 

     Console.WriteLine($"The sum of your numbers is {0}", result1); 
     Console.WriteLine($"The difference of your numbers is {0}", result2); 
     Console.WriteLine($"The average of your numbers is {0}", result3); 

     Console.ReadKey(); 
    } 
} 
+1

alle drei Methoden benötigen 2 Parameter und Sie nur 1 an jeden von ihnen übergeben, und Sie haben nicht die Rückkehr Ed-Wert von den Funktionen – shole

+1

Ich denke, Sie verwirren Funktionsargumente (Eingabe) mit Funktionsausgabe. Sie rufen 'addNumbers',' subNumbers' und 'avgNumbers' mit den Variablen result1, result2 bzw. result3 als Eingabe auf, aber Sie verwenden diese Variablen später, als ob Sie erwartet hätten, dass sie die Ausgabe der Funktionen enthalten. Sie definieren diese Variablen auch nicht in Ihrer Hauptmethode (Sie müssen Variablen definieren, bevor Sie sie verwenden). –

+0

Mein Ziel (und die Zuordnung) war, die Funktionen einzurichten und dann vom Benutzer 2 Zahlen eingeben zu lassen.Rufen Sie dann die eingerichteten Funktionen auf, um verschiedene Ergebnisse zu erhalten, und geben Sie die Ergebnisse an den Benutzer aus. Ich entschuldige mich, dass ich das in meiner Erklärung vermisst habe. Was ich nicht herausfinden konnte, wie es geht; Der Code sollte jedoch innerhalb dieser Parameter einen guten, funktionierenden Code erstellen. Ich wünschte, ich hätte ein besseres Verständnis für alle Funktionen des Codes, den ich verwenden möchte. Ich glaube, das würde mir helfen, meine Probleme zu finden und zu beheben. Wie es ist, korrigiere ich gerade irgendwelche Fehler, die in VS auftauchen. – Alex

Antwort

3

Die Klammern die Methodenargumente enthalten (In Ihrem Fall die Zahlen zu addieren, subtrahieren oder Durchschnitt). Wenn eine Methode etwas zurückgibt, müssen Sie ihren Wert einer Variablen in der aufrufenden Routine mit einem Gleichheitszeichen zuweisen.

public static void Main(String[] args) 
    { 
     var result1 = Functions.addNumbers(13, 14); 
     var result2 = Functions.subNumbers(17, 18); 
     var result3 = Functions.avgNumbers(20, 21); 
0

Allgemeine Erklärung

Wenn Sie eine Methode aufrufen, gibt es mehrere Komponenten auf den Anruf.

var returnValue = StaticClassOrObject.MethodName(parameterOne, parameterTwo, etc); 

// For Example 
double sinValue = Math.Pow(2, 8); 

MethodName ist der Name des Verfahrens, wie es definiert ist. Im Beispiel lautet der Name der Methode "Pow".

StaticClassOrObject ist der Name der statischen Klasse oder Objektreferenz, von der Sie die Methode aufrufen. Im Beispiel ist dies die statische Klasse "Math". (Beachten Sie, wenn Sie die Methode aus dem Inneren der gleichen Klasse aufrufen, wo die Methode definiert ist, diese Komponente ist optional.)

parameterOne, parameterTwo, etc sind Parameter, die an die Methode übergeben werden. Wenn eine Methode mit einer bestimmten Anzahl von Parametern deklariert ist, müssen beim Aufruf der Methode so viele Parameter übergeben werden. In diesem Beispiel benötigt die Methode Math.Pow zwei Parameter. Wenn Sie also mehr oder weniger übergeben, führt dies zu einem Fehler.

returnValue ist der Wert, den die Methode bei ihrer Ausführung zurückgibt. Wenn die Methode den Rückgabetyp void hat, gibt die Methode nichts zurück. In diesem Beispiel gibt Math.Pow einen Wert vom Typ double zurück. Daher deklariere ich eine Variable dieses Typs, die den zurückgegebenen Wert enthält. (Mittels einer Verknüpfung können Sie das Stichwort var verwenden die Art der Variablen zu haben, automatisch in den Rückgabetyp des Verfahrens eingestellt werden.)

Ihr Fehler

Der Fehler in der Programm ist zweifach. Erstens übergeben Sie nur einen einzelnen Parameter in Ihren Methodenaufrufen, aber für jede dieser Methoden sind zwei Parameter definiert. Zweitens, die Parameter, die Sie übergeben (result1, result2, result3) sind nirgendwo deklariert, so dass sie für die Zwecke Ihres Programms nicht existieren.

diese Fehler korrigieren wird Ihnen etwas wie folgt aus:

var result1 = Functions.addNumbers(1, 2); 
var result2 = Functions.addNumbers(3, 4); 
var result3 = Functions.addNumbers(5, 6); 

Obwohl alles, was Sie tun, ist in der Functions Klasse, so dass der ClassNameOrObject Teil des Aufrufs sicher entfernt werden kann:

var result1 = addNumbers(1, 2); 
var result2 = addNumbers(3, 4); 
var result3 = addNumbers(5, 6); 

Diese Beispiele übergeben nun konstante Werte als Parameter. Wenn Sie eine Variable als Parameter übergeben wollen, müssen Sie zuerst deklarieren und instanziieren:

double param1 = 1; 
double param2 = 2; 
var result1 = addNumbers(param1, param2); 
0

Das Wichtigste zuerst ..

Was ich verstehe, dass Sie zu C# -Programmierung und Autodidakt neu sind. Ich würde Visual Studio für die Programmierung in C# empfehlen, damit Sie die Probleme schnell erkennen können. Die IDE wird rot verschnörkelt, wenn Kompilierungszeitfehler oder Syntaxfehler auftreten, die ich in dem obigen Code sehe, den Sie mit der Frage eingefügt haben. Siehe unten meine Pic In dem Bild .. die Error Show ist Ass Nummer erwartet 2 Parameter getrennt durch, und Sie nur 1 übergeben - müssen Sie 2 Zahlen oder 2 Variablen, die als doppelt deklariert sind und hat einen Wert zugewiesen. enter image description here

Im oben dargestellten Bildschirm können Sie Fehler sehen „Ergebnis 1 existiert nicht im Kontext - das bedeutet Sie result1 nicht erklärt haben, -. Sie 2 Variablen vom Typ double deklarieren müssen enter image description here

im oben dargestellten Bildschirm sehen Sie einen anderen Fehler - unerwartetes Zeichen $ - nicht sicher, wo Sie diese bekommen und was wollten Sie mit $ Zeichen schreiben ..

enter image description here

im obigen Fenster Console.WriteLine siehe ist expec String und Param-Objekt, die Sie richtig angegeben, warum haben Sie $ Zeichen hinzugefügt ..

Wie ich denke, Sie brauchen wirklich Visual Studio, so dass Sie viele dieser Probleme auf eigene Faust beheben können ..

Hier ist das komplette Laufprogramm.

namespace FunctionCalls 
{ 
    class Functions 
    { 
     static public double addNumbers(double number1, double number2) 
     { 
     double result1 = number1 + number2; 
     return result1; 
     } 

     static public double subtractNumbers(double number1, double number2) 
     { 
     double result2 = number1 - number2; 
     return result2; 
     } 

     static public double avgNumbers(double number1, double number2) 
     { 
     double result3 = (number1 + number2)/2; 
     return result3; 
     } 

     static void Main(String[] args) 
     { 
      double result1 = 20.00; 
      double result2 = 10.00; 
      double sum, sub, avg; 

      sum = Functions.addNumbers(result1, result2); 
      sub = Functions.subtractNumbers(result1, result2); 
      avg = Functions.avgNumbers(result1, result2); 

      Console.WriteLine("The sum of your numbers is {0}", sum); 
      Console.WriteLine("The difference of your numbers is {0}", sub); 
      Console.WriteLine("The average of your numbers is {0}", avg); 

      Console.ReadKey(); 
     } 
    } 
} 

und hier ist der Schuss Ergebnisbildschirm .. enter image description here

this helps ..

Glücklich Lernen

markieren Sie bitte die es beantwortet - wenn ich in der Lage war, um zu helfen Beantworten Sie Ihre Frage ..

Verwandte Themen