C# Case-Anwendung wie geht das?

Status
Für weitere Antworten geschlossen.

mamnu

Cadet 4th Year
Registriert
Okt. 2017
Beiträge
119
Guten Tag,
Wir sollen für die Schule eine Case-Anwendung in Sharpdevelop erstellen. Diese soll wenn man die Note in Zahl eingibt, die Note als Text wiedergeben. Aber da keiner eine Ahnung davon hat, da wir es noch nie gemacht haben und wir die Internet definitionen nicht oder nur kaum verstehen. Der Lehrer hilft uns genauso wenig und da es benotet wird suche ich hier mal hilfe.
Wir haben schon einen Programmcode erstellt. Der sieht wie folgt aus:
using System;

public enum note {1, 2, 3, 4, 5, 6}
{
class Program
{
public static void Main(string[] args)
{
note n = (note) (new Random()). Next(0,6);

//Eingabe
Console.WriteLine ("Geben Sie die Note als Zahl ein: ");

//Verarbeitung
switch (n) {
case 1: note.1
Console.WriteLine("sehr gut");
break;
case 2: note.2
Console.WriteLine("gut");
break;
case 3: note.3
Console.WriteLine("befriedigend");
break;
case 4: note.4
Console.WriteLine("ausreichend");
break;
case 5: note.5
Console.WriteLine("mangelhaft");
break;
case 6: note.6
Console.WriteLine("ungenügend");
break;

default:
Console.WriteLine("Note nicht erkannt.");
break;
}
//Ausgabe
Console.WriteLine ("Note als Text: ");


Console.Write("Press any key to continue . . . ");
Console.ReadKey(true);
}
}
}
Fehlermeldungen (cs1022) aber da ist doch keine Klammer zuviel, oder? Und (cs1001)
Über Hilfe würde wir uns freuen
 
Wazu das enum?

Und du kannst Code in
HTML:
[CODE][/CODE]
Klammern packen, dann kann man ihn leichter lesen.
 
Dachte ich muss es nach diesem Muster machen
using System;

public enum Color { Red, Green, Blue }

public class Example
{
public static void Main()
{
Color c = (Color) (new Random()).Next(0, 3);
switch (c)
{
case Color.Red:
Console.WriteLine("The color is red");
break;
case Color.Green:
Console.WriteLine("The color is green");
break;
case Color.Blue:
Console.WriteLine("The color is blue");
break;
default:
Console.WriteLine("The color is unknown.");
break;
Wie gesagt wir haben keine Ahnung, eine Anleitung oder sonst was
 
Warum versucht ihr es nicht einfach mal mit der wesentlich komfortableren Microsoft Visual Studio 2015 Community Edition???
 
Dann schau dir dein Beispiel noch mal genau an.

Es geht mit einem enum, nur nicht so wie du es erstellt hast und beim switch case stimmt die Syntax nicht.
 
Zuletzt bearbeitet:
@ella weil wir diese Version mit diesem Programm benutzen müssen
@nilson ich schau das schon seit Stunden drauf finde, aber nichts (wahrscheinlich bin ich schon ganz blöd vom draufschauen)
 
So auf den ersten Blick: Du definierst eine Note n mit einem Zufallsgenerator, liest aber nirgendwo die Nutzereingabe ein. Und während Color.Red eine Eigenschaft ist, ist es "note.6" nicht so wirklich.
Schau dir z.B. hier die einfachen Beispielen an.
 
Vergleich einfach mal
Code:
case 4: note.4
case Color.Red:

und
Code:
public enum note {1, 2, 3, 4, 5, 6}
public enum Color { Red, Green, Blue }

ok, der zweite ist etwas schwerer
 
Was du brauchst sind allgemein folgende Codebestandteile:
  1. Konsolenbenutzerführung und Eingabe
  2. Verarbeitung der Eingabe
  3. Darstellung der Ausgabe

Im Grunde kannst du es so machen:
  • Kleiner Text was der User machen soll (wie du schon geschrieben hast: "Bitte geben Sie die Schulnote ein (1-6): ")
  • Die liest du entsprechend ein, weist sie einer Variable zu und prüfst, ob sie im richtigen Rahmen liegt bzw. überhaupt ein Integer/ eine Zahl ist. (Prüfung kann hier auch im Rahmen der Switch Anweisung erfolgen, wie bereits bei dir vorhanden)
  • Deine Switch Case Sache passt denke ich soweit, den enum kannst du aber weg lassen. Da du eh nur Integer Werte einliest ist der völlig überflüssig :) Ist so schon übersichtlich genug^^
  • Dann gibst du einfach die entsprechende Note über die Konsole wieder aus und schaust, ob er weiter eingeben will oder die Anweisung beenden, wieder mit Eingabe (ja [y]/nein [n]), und handelst dementsprechend.

Daher denke ich, dass ihr da schon was Gutes gebaut habt.

Was bei euch raus muss ist der Random Generator. Ihr wollt ja eine Eingabe deuten und keinen zufälligen Wert. Weiterhin, wenn die Note nicht erkannt wird weil falsches Format oder außerhalb von 1 und 6 dann soll die Abfrage ja z. B. erneut starten. Sprich du musst die Abfrage von vorn beginnen. Am einfachsten geht das, wenn du so einen Check wie die Switch Case Sache in eine Methode o. ä. auslagerst und dann bei default einfach sagst "Keine gültige Note (1-6) eingegeben, bitte versuchen sie es erneut" und dann die selbe Methode aufrufst.

Und so weiter. Ihr seid schon fast fertig, es fehlt nur noch der Feinschliff :)
Viel Erfolg euch dabei!
 
Nilson schrieb:
Vergleich einfach mal
Code:
case 4: note.4
case Color.Red:

und
Code:
public enum note {1, 2, 3, 4, 5, 6}
public enum Color { Red, Green, Blue }

ok, der zweite ist etwas schwerer

Muss beim ersten der doppelpunkt am Schluss sein?
Dürfen beim zweiten nur Wörter in der Klammer sein? Sonst fällt mir nichts besonderes auf
 
Was ermöglichen dir Enums? Die einfache Prüfbarkeit sonst nicht greifbarer Eigenschaften. Eine Farbe hat keine normale Code-Repräsentation. Also sagst du ich mach mir einen Enum Color, welcher weiter definiert wird durch die entsprechenden Farben. Was du hier machst ist eine schon offensichtliche und darstellbare Note als Zahl mit einer anderen Enum Zahl darzustellen. Fällt dir jetzt was auf? :D
 
Soll das heißen ich definiere die Zahlen zweimal? Sorry als Anfänger ist das so schwer
 
Ja sozusagen :D
Anderes Beispiel, Marke.Ferrari & Marke.Porsche vs. Milliliter.100 & Milliliter.250. Sowas ist unnötig, weil du auch gleich auf 100 oder 250 prüfen kannst, was bei Porsche und Ferrari natürlich nicht so einfach geht, da diese keine natürliche Repräsentation haben. (Hier kann man natürlich dann noch nach Strings und so unterscheiden aber lassen wir das für den Anfang weg).

Es reicht also bei eurer Anwendung direkt eure vorgegebene Zahl von 1-6 in der Switch Anweisung zu prüfen und nicht nochmal dafür ein Enum zu benutzen :) Das einzige was ihr machen müsst ist die Eingabe zu validieren und darauf Rücksicht zu nehmen.
 
Wenn ich jetzt das enum streiche verlangt er nach
Klasse, Delegat, Enumeration, Schnittstelle oder Struktur erwartet. (CS1518)
 
Mit einfach nur dem Enum löschen ist es natürlich nicht getan. Du musst den Rest vom Code auch entsprechend umschreiben.
 
Kannst du bitte Code in der
Code:
 Umgebung (hier auf CB, in erweiterter Ansicht) posten? Da sehe ich eher Fehler, als mit "Hier ist ein Fehler" ^^"

Edit: Das was Nilson sagt o/
 
Jetzt müsste ich nur noch wissen wie man einen Code umschreibt ^^
 
Lol o.O

umschreiben = ändern = anpassen = bearbeiten
 
Wie schon geschrieben musst du deinen Code anpassen, sprich die Zugriffe auf dein Enum entfernen (cast bei dem Random...). Weise int n doch einfach mal einen Wert zu und schaue auf deine Ausgabe. Dann veränderst du den Wert im Code und schaust wieder was passiert. Abschließend versuchst du mal eine Eingabe aus der Konsole einzulesen und weißt die n zu.
 
danke ^^ (jetzt mal im Ernst ich meinte was muss ich den genau umschreiben) :D
 
Status
Für weitere Antworten geschlossen.

Ähnliche Themen

Antworten
10
Aufrufe
771
K
Antworten
13
Aufrufe
3.237
K
Antworten
18
Aufrufe
2.084
R
Zurück
Oben