Laden...

Problem: Array an Methode übergeben

Erstellt von Skilllord vor 14 Jahren Letzter Beitrag vor 14 Jahren 6.999 Views
S
Skilllord Themenstarter:in
20 Beiträge seit 2009
vor 14 Jahren
Problem: Array an Methode übergeben

Hi,

Ich programmiere gerade einen Promille-Rechner. Er ist schon fast fertig, es hapert nur noch an einer Kleinigkeit:

Ich habe Textboxen, in denen man den Alkoholgehalt und die Menge des jeweiligen Getränks eingeben muss:

double[] Alkoholgehalt = new double[6];
            double[] GetränkMenge = new double[6];

Alkoholgehalt[0] = Convert.ToDouble(textBoxAlkoholgehalt1.Text);
...usw...

GetränkMenge[0] = Convert.ToDouble(textBoxMenge1.Text);
...usw...

Und diese Arrays möchte ich nun an eine Methode übergeben, die das ganze ausrechnen soll:

public void AlkoholAufgenommenAusrechnen(double[] Alkoholgehalt, double[] GetränkMenge)

{
      ....
}

So kann das natürlich nicht klappen, weil die Arrays aus der Methode ja gar nicht wissen, welche Elemente sie aus den anderen Arrays aufnehmen sollen.

Geht das überhaupt irgendwie mit Arrays, oder wie stelle ich das am besten an?

Wenn dieser kleine Stoperstein beseitigt ist, stelle ich das Programm hier vor 😉

49.485 Beiträge seit 2005
vor 14 Jahren

Hallo Skilllord,

So kann das natürlich nicht klappen

doch genau so kann das klappen.

weil die Arrays aus der Methode ja gar nicht wissen, welche Elemente sie aus den anderen Arrays aufnehmen sollen.

ich verstehe nicht, was du meinst. Ich gehe mal davon aus, dass beide Arrays gleich groß sind und die Elementen mit dem jeweils gleichen Index zusammengehören. Dann gibt es keine Probleme.

Es gibt sicher schönere Lösungen (z.B. ein Array von struct Getraenk mit den Properties Alkoholgehalt und Menge), aber für den Anfang ist das ganz ok, wie du es hast.

Convert.ToDouble

Du solltest immer mit Fehleingaben durch den Benutzer rechnen. Verwende daher besser Double.TryParse.

textBoxAlkoholgehalt1

Schick wäre hier ein arrayTextBoxAlkoholgehalt _ zu verwenden.

Das beides zu vertiefen gehört aber nicht mehr in diesen Thread.[/color]

herbivore

S
Skilllord Themenstarter:in
20 Beiträge seit 2009
vor 14 Jahren

Hi,

Wo muss ich denn eine Instanz von den Arrays erstellen?

public void AlkoholAufgenommenAusrechnen(double[] Alkoholgehalt, double[] GetränkMenge)

Denn bis jetzt sind das ja nur Referenzvariablen?

Ich habe versucht, die Arrays in der Methode zu instanziieren, aber es gibt trotzdem immernoch die gleichen Fehler.

Alkoholgehalt = new double[6];
            GetränkMenge = new double[6];
Fehler	1	Syntaxfehler. Wert erwartet.
Fehler	2	Syntaxfehler. Wert erwartet.
Fehler	3	Die beste Übereinstimmung für die überladene Promille_Rechner.Rechnung.AlkoholAufgenommenAusrechnen(double[], double[])-Methode hat einige ungültige Argumente.
Fehler	4	1-Argument: kann nicht von "double" in "double[]" konvertiert werden.
Fehler	5	2-Argument: kann nicht von "double" in "double[]" konvertiert werden.

Diese Fehler gibt es alle in der Zeile:

rechnung.AlkoholAufgenommenAusrechnen(Alkoholgehalt[], GetränkMenge[]);
V
78 Beiträge seit 2008
vor 14 Jahren

Dann möchte ich erstmal auf [Hinweis] Syntaxfehler selbst lösen (Compilerfehlermeldungen) verweisen.

Fehler 3 Die beste Übereinstimmung für die überladene Promille_Rechner.Rechnung.AlkoholAufgenommenAusrechnen(double[], double[])-Methode hat einige ungültige Argumente.

Das heißt du übergibst deiner Methode beim Aufrufen 2 doubles statt 2 double-Arrays.

Also z.B.


double a = 0;
double b = 0;

AlkoholAufgenommenAusrechnen(a, b);

Richtig wäre:


double[] a = new double[6];
double[] b = new double[6];

AlkoholAufgenommenAusrechnen(a, b);

EDIT:

Wo muss ich denn eine Instanz von den Arrays erstellen?

Auf jeden Fall bevor du die Methode AlkoholAufgenommenAusrechnen(...) aufrufst.