Arrays in VB - C#

Dabei seit
Juni 2020
Beiträge
2
Hallo,

ich bin sehr neu in der Welt der Anwendungsentwicklung, jedoch versuche ich so sorgfältig wie möglich zu sein.

Ich bin dabei eine Anwendung zu schreiben in der man Obstsorten und deren Preise sehen kann. Ich habe es am Anfang gut hinbekommen, jedoch mit über 100 Zeilen und Label Funktionen. Jetzt bin ich dabei mir Arrays anzuschauen und bin dabei am Verzweifeln ^^

private void btshowall_Click(object sender, EventArgs e)
{

string[] obst = { "Banane", "Kiwi", "Apfel", "Orange", "Himbeere", "Birne", "Pflaume" };

string[,] zweiD = new string[3, 4];
zweiD[0, 0] = "0,0";
zweiD[0, 1] = "0, 1";
zweiD[0, 2] = "0, 2";
zweiD[0, 3] = "0, 3";
zweiD[1, 0] = "1, 0";
zweiD[1, 1] = "1, 1";
zweiD[1, 2] = "1, 2";
zweiD[1, 3] = "1, 3";
zweiD[2, 0] = "2, 0";
zweiD[2, 1] = "2, 1";
zweiD[2, 2] = "2, 2";
zweiD[2, 3] = "2, 3";

string[] obstschleife = new string[100];
for (int i = 0; i < 42; i++)
{
obstschleife = "Obst " + (i + 1);
}
for (int i = 0; i < 100; i++)
{
Console.WriteLine(obstschleife);
}
}

Das habe ich bisher, aber es Funktioniert nicht.


Kann mir jemand Helfen ?
 

Nero1

Commander
Dabei seit
Nov. 2009
Beiträge
2.698
Bitte hau den Code in die dafür vorgesehenen Code-Blocks im Editor. Das macht es um einiges lesbarer.

Als zweites schaust du dir bitte mal die Zuweisung von Werten innerhalb eines Arrays an, dann wirst du sehen warum insbesondere die Stellen obstschleife = "Obst " + (i + 1) sowie Console.WriteLine(obstschleife) nicht so wirklich Sinn ergeben :D Stichwort Zuweisung und Auslesen über Indizes. Damit solltest du schon etwas weiter kommen :)

(Was soll das Array zweiD eigentlich darstellen? Oder ist das nur für dich als Übersicht?)
 

Senvo

Vice Admiral
Dabei seit
Aug. 2014
Beiträge
7.034
Ich komme zwar aus der Java Welt, aber was soll den die Zeile machen?
tring[] obstschleife = new string[100];

Und sind die Preise für das Obst schon fest im Array, welche sind es denn?
 

DocWindows

Rear Admiral
Dabei seit
Mai 2013
Beiträge
5.596
Ich bin dabei eine Anwendung zu schreiben in der man Obstsorten und deren Preise sehen kann. Ich habe es am Anfang gut hinbekommen, jedoch mit über 100 Zeilen und Label Funktionen. Jetzt bin ich dabei mir Arrays anzuschauen und bin dabei am Verzweifeln
.NET bietet dir für sowas unterschiedliche Klassen in unterschiedlichen Namespaces an.
Hier würde sich vermutlich etwas aus dem Namespace System.Collections anbieten.

Sofern jede Obstsorte nur einmal vorkommt, könnte man beispielsweise ein "Dictionary" verwenden.

Code:
Dictionary<string, float> Obstsorten
würde z.B. eine geschlüsselte Liste von Obstnamen und Preisen darstellen. string ist der Datentyp des Keys (darf nur einmal vorkommen), also die Obstsorte, und der float-Typ (man kann auch decimal oder double nehmen) wäre der Preis.

Das Dictionary kannst du dann in einer foreach Schleife durchgehen und Obstname und Preis ausgeben.

Code:
Dictionary<string,float> obst =new Dictionary<string, float>() { { "Banane", 1.5F },{ "Kiwi", 0.8F } };

foreach (KeyValuePair<string, float> kvp in obst)
{
   Console.WriteLine(kvp.Key.ToString() + "-" + kvp.Value.ToString());
}
würde hier die Banane für 1,50 ausgeben und die Kiwi für 0.80

Falls man den Preis einer Obstsorte ändern will, kann man das dann sehr einfach über den Key machen
Code:
obst["Banane"] = 1.23;
 

Turian

Cadet 4th Year
Dabei seit
Apr. 2012
Beiträge
88
Und als Tipp direkt zum Beginn: Kommentare hinter jede Anweisung. Das hilft dir (auch zum Nachvollziehen später) und allen die dir z.B. bei etwas helfen.
 

Raijin

Fleet Admiral
Dabei seit
Nov. 2007
Beiträge
11.287
Das habe ich bisher, aber es Funktioniert nicht.
Wenn dem so ist, kann es uuuuuuuuuuuuuuungemein hilfreich sein, wenn du konkret schreibst WAS denn nicht funktioniert. Das schließt etwaige Fehler und/oder Warnungen der Entwicklungsumgebung, Exceptions während der Laufzeit oder schlicht und ergreifend unerwartete Ergebnisse mit ein. Dokumentiert wird das idealerweise anhand von Screenshots oder Copy&Paste. "Funktioniert nicht" ist nämlich die denkbar schlechteste Fehlerbeschreibung, die man sich denken kann.
 

maverickbussman

Newbie
Ersteller dieses Themas
Dabei seit
Juni 2020
Beiträge
2
Danke erstmal euch allen für die Schnelle Beantwortung.
Hier seht ihr wie das ganze Aussehen sollte.

Wenn ich auf den Button Klicke sollten eigentlich alle angegeben Obstsorten ausgegeben werden wie zum Beispiel Bananen, jedoch weiß ich nicht wie ich das in Arrays machen kann. Hinzu kommt noch das diese nur Angezeigt werden sollen wenn man auf den Button Klickt.
 

Anhänge

Nero1

Commander
Dabei seit
Nov. 2009
Beiträge
2.698
jedoch weiß ich nicht wie ich das in Arrays machen kann
Hast du dich denn überhaupt schon mit Arrays beschäftigt? Falls nicht solltest du dir da erstmal die Grundlagen aneignen, wenn du das hast dir ein grobes Konzept ausdenken, wie du die Lebensmittelzuordnung allgemein und in einem Array strukturieren würdest (d. h. Obst -> Preis; am besten mit ein paar Beispielen für das Verständnis, Pseudocode reicht für den Anfang) und schlussendlich dich daran setzen das in die Struktur zu überführen. An sich hast du dazu schon einige Inspirationen bekommen, auf die ein oder andere Art. Ist am Ende ja nichts weiter als ein "wie speichere ich das korrekt ab" und "wie kann ich das gespeicherte so auslesen, dass ich den Wert bekomme, den ich haben will".

Wenn du erwartest, dass hier ein Code Monkey ankommt und dir den fertigen Code präsentiert, hast du evtl. Glück, aber das ist eher selten. Ich könnt dir das in 2 Minuten schreiben, aber das ist ja nicht Sinn der Sache. Ich sehe bisher allerdings nicht wirklich Eigeninitiative oder klare Problemstellungen außer "keine Ahnung wie das geht", da mach ich nicht mit. Die GUI mal außen vor lassen für den Moment, kümmer dich erstmal um Grundlagen von Arrays in C# und dann sehen wir weiter. Und dann stelle bitte präzise Fragen, d. h. was hast du probiert, was kam dabei raus und an welcher Stelle verstehst du nicht, warum das passiert. Wenn wir an dem Punkt angelangt sind können wir dir hier auch fundiert unter die Arme greifen. Gefühlt ist das bisher, ohne es böse zu meinen, ein Paradebeispiel von "zu viel gewollt, zu wenig Grundlagen vorbereitet", was dann zwangsweise irgendwann schief geht.
 

Turian

Cadet 4th Year
Dabei seit
Apr. 2012
Beiträge
88
Wie wäre es, wenn du z.B. deinen Anfangspost editierst und die Codezeilen kommentierst, mit dem was sie machen bzw. was sie machen sollen - auch wenn es nervt und langweilig ist, manchmal findet man durch das ausformulieren Fehler, die man im Code sonst schnell übersieht.
Was auch helfen kann ist einen Programmablaufplan zu erstellen, also was soll wie passieren. Ganz Simpel anfangen und nach und nach feiner aufteilen - von 'Obst suchen -> Obst Anzeigen' zu 'Obst eingeben, Button drücken, Werte abgleichen, Werte ausgeben'.
 

Raijin

Fleet Admiral
Dabei seit
Nov. 2007
Beiträge
11.287
Man sollte sich zudem gleich am Anfang schon mit den Möglichkeiten der Entwicklungsumgebung bzw. allgemeinen Debugging-Methoden zu beschäftigen.

Ganz banal kann man mit Debug.WriteLine bzw. auch Console.WriteLine arbeiten, um sich an relevanten Stellen im Code den dort aktuellen Wert von Variablen ausgeben zu lassen.

Etwas fortgeschritten kann man das Programm im Debug-Modus Schritt für Schritt durchlaufen - dazu zunächst einen Haltepunkte auf die interessanten Codeabschnitte setzen (zB Funktionsanfang) - und mit Mouse-over aktuelle Werte von Variablen anzeigen lassen oder gar explizit im Überwachungs-Fenster beobachten. So könnte man zB sehen wie sich das Array nach und nach füllt - oder eben auch nicht.

Ich rate dir, dich mit diesen Möglichkeiten vertraut zu machen, da man spätestens dann, wenn das Programm aus Dutzenden oder gar Hunderten von Dateien besteht, Fehler nicht mehr durch scharfes Hinsehen finden kann. Die meisten Fehler treten nämlich erst zur Laufzeit auf, wenn zB ein Funktionsparameter nicht das enthält was man erwartet hatte. Nicht immer steckt die Ursache nämlich in dem Programmteil, in dem man sie ursprünglich vermutet hatte. Eine Funktion kann 1:1 das tun was sie tun soll, aber wenn sie falsch aufgerufen wird, ist dieser Aufruf bzw. der dazu führende Code die Ursache und nicht die Funktion selbst.


Eine kurze Suche bei google hat dieses Video geliefert. Hab das nur kurz durchgeklickt, aber dort werden zB der Debug-Modus sowie die Überwachung einer Variable gezeigt.



Wenn man weiß wie man Probleme im Programmablauf beobachten kann, fällt es auch leichter, die Ursache zu finden und vor allem nachzuvollziehen wie es überhaupt dazu kommen konnte. Das ist das A und O beim Programmieren und trägt einen signifikanten Teil zum Verständnis von Programmabläufen bei.
 

morcego

Lt. Commander
Dabei seit
Aug. 2008
Beiträge
1.707
Als Ein- oder Umsteiger fehlt einem schlichtweg der Überblick was man wie machen kann, man wüsste nichtmal wonach man wirklich suchen muss. Was man findet sind 1000 Erklärung was eine Variable ist, aber nicht, was man womit anstellt im Alltag.
Mein Vorschlag:
https://www.youtube.com/c/DCOMEngineeringLLC/videos
Von dem Knaben die Videos zu WPF MVVM Session 1-x und Enterprise MVVM 1-5 ansehen. Der baut nicht nur ne Projektstruktur in Visual Studio auf, sondern arbeitet auch testbasiert (Test Driven Design), mit SQL Datenbanken und was das wichtigste ist, er baut zwischendrin auch mal um (Refactoring). Alles Sachen die im Alltag völlig normal sind, aber praktisch nie so gut in Büchern erklärt werden weil die meistens nur "die Sprache xy" durchkauen.
Danach hat man wenigstens einen groben Überblick und erste Ideen wenn einer Worte wie "Business Layer" in den Raum wirft.
 
Top