?
Hallo Gemeinde,
ich absolviere grad ein Studium (ILS) und habe zur Aufgabe, mit C# ein Lagerverwaltungsprogramm zu schreiben. Dazu soll eine struct gebaut werden, welches in ein Array eingelesen und über Methoden bearbeitet werden soll.
Leider sehe ich nix, außer dem Brett vor´m Kopf. Ich finde weder im Netz, noch in meiner Literatur eine Lösung für meinen Fehler.
Mein Code bisher :
namespace CSHP04C___EA
{
class Program
{
//die Struktur
struct Kiste
{
public string id_kiste;
public double breite;
public double laenge;
public double hoehe;
public double volumen;
}
//die Methode zum Einlesen
static Kiste Einlesen(int kistenNr)
{
Kiste akiste;
Console.WriteLine("\nBitte Namen fuer Kiste {0} eingeben : ",kistenNr);
akiste.id_kiste = Convert.ToString(Console.ReadLine());
Console.WriteLine("\n\nDie Breite von Kiste {0} : ",kistenNr);
akiste.breite = Convert.ToDouble(Console.ReadLine());
Console.WriteLine("Die Laenge von Kiste {0} : ",kistenNr);
akiste.laenge = Convert.ToDouble(Console.ReadLine());
Console.WriteLine("Die Hoehe von Kiste {0} : ",kistenNr);
akiste.hoehe = Convert.ToDouble(Console.ReadLine());
akiste.volumen = akiste.breite * akiste.laenge * akiste.hoehe;
Console.WriteLine("\n\n\nDas Volumen von Kiste {0} : {1} Liter. ",kistenNr, akiste.volumen);
Console.WriteLine();
return akiste;
}
//die Methode zum Auflisten
static void Auflisten(Kiste[] liste)
{
foreach(Kiste element in liste)
{
Console.WriteLine("\nKiste {0} ", liste);
Console.WriteLine("\nBeliebige Taste fuer Hauptmenue !!");
Console.ReadKey();
}
}
static void Main(string[] args)
{
int maximum = 2;
Kiste[] kleineKiste = new Kiste[maximum];
int anzahl = 0;
char auswahl;
bool repeat = true;
//do -Schleife fuer Hauptmenue
do
{
//das Auswahl-Menue
Console.Clear();
Console.WriteLine();
Console.WriteLine("\n\t\t\t\t\t\t\t LAGERVERWALTUNG ");
Console.WriteLine();
Console.WriteLine(" 1 - Kiste anlegen ");
Console.WriteLine(" 2 - Kiste auflisten ");
Console.WriteLine(" 3 - Kiste suchen ");
Console.WriteLine(" 4 - Kiste aendern ");
Console.WriteLine(" 5 - Kiste loeschen \n");
Console.WriteLine(" 0 - Programm beenden ");
Console.WriteLine("\n\n Ihre Auswahl : ");
auswahl = Convert.ToChar(Console.ReadLine());
//der switch-Case
switch (auswahl)
{
//1 - Neuen Eintrag anlegen
case '1':
Console.Clear();
if (anzahl < kleineKiste.Length)
{
Einlesen(anzahl+1);
anzahl++;
}
else
Console.WriteLine("\nAlle Arrays belegt !!");
Console.WriteLine("\n\nBeliebige Taste fuer Hauptmenue !!");
Console.ReadKey();
break;
//2 - Eintraege auflisten
case '2':
Console.Clear();
if (anzahl == 0)
{
Console.WriteLine("\nEs sind noch keine Eintraege gespeichert !!");
Console.WriteLine("\n\nBeliebige Taste fuer Hauptmenue !! ");
Console.ReadKey();
}
else
{
Auflisten(kleineKiste);
Console.Write("\n\nBeliebige Taste fuer Menue !!");
Console.ReadKey();
}
break;
Die Ausgabe dazu :
Kiste CSHP04C___EA.Program+Kiste[]
Lege ich mehr Platzhalter an, kriege ich auch eine Fehlermedlung :
Unbehandelte Ausnahme: System.FormatException: Der Index, basierend auf 0 (null), muss größer als oder gleich Null sein, und kleiner als die Größe der Argumentenliste.
bei System.Text.StringBuilder.AppendFormatHelper(IFormatProvider provider, String format, ParamsArray args)
bei System.String.FormatHelper(IFormatProvider provider, String format, ParamsArray args)
bei System.IO.TextWriter.WriteLine(String format, Object arg0)
bei System.IO.TextWriter.SyncTextWriter.WriteLine(String format, Object arg0)
bei System.Console.WriteLine(String format, Object arg0)
bei CSHP04C___EA.Program.Auflisten(Kiste[] liste) in C:\Users\kiske\Documents\Visual Studio 2015\Projects\CSHP04C - EA\CSHP04C - EA\Program.cs:Zeile 47.
bei CSHP04C___EA.Program.Main(String[] args) in C:\Users\kiske\Documents\Visual Studio 2015\Projects\CSHP04C - EA\CSHP04C - EA\Program.cs:Zeile 107.
Kann mir jemand sagen, wo ich den Denkfehler habe?
Ich bedanke mich vielmals.
Mit bestem Gruß
shrotty