C# Case-Anwendung wie geht das?

Status
Für weitere Antworten geschlossen.
Letztendlich ... ja.

Ein enum fasst zugelassene Zustände/Ausprägungen eines Attributes zusammen.
Du kannst so zum Beispiel wie schon oben erwähnt mehrere Ausprägungen des Attributes Farbe definieren:
Code:
enum Farbe {rot, gruen, blau, gelb, lila};

und dann mittels Farbe.Ausprägung draufzugreifen:
Code:
Farbe meine_farbe = Farbe.rot;
.

In eurem Fall kann man ein Enum verwenden, es ist aber nicht besonders sinnvoll.
Überprüft einfach nach der Nutzereingabe, ob der Eingabewert im unterstützten Bereich (1<= x <= 6) liegt.

Bezüglich des Switches solltet ihr euch mal die genaue Sytax ansehen und verstehen: Microsoft C# Referenz.

Der Sinn des Switch Statements ist es einfach, bei mehreren möglichen Werten eines Datentypes viele umständliche if Statements zu sparen.

Edit: ups da war ich wohl ein wenig zu langsam =)
 
Das erste Beispiel aus meinem Link weiter oben tut genau das, was du willst. "value" ist deine "note", die du vor dem switch-Block noch einlesen musst (oder generieren - je nachdem, was eigentlich sein soll).

Code:
using System;

class Program
{
    static void Main()
    {
        int value = 5;
        switch (value)
        {
            case 1:
                Console.WriteLine(1);
                break;
            case 5:
                Console.WriteLine(5);
                break;
        }
    }
}
 
Was wir hier nicht machen ist dir fertigen Code präsentieren. 00Zetti hat dir da eigentlich alles wichtige gesagt. Enum und Verweise/Verwendungen raus, mit Integern ersetzen, erstmal feste Werte nehmen (int note = 1), in das switch hauen und auf der Konsole schauen, ob "sehr gut" raus kommt. Wenn das klappt auch mit anderen Noten prüfen, wenn das klappt "int note" durch die Konsoleneingabe einlesen.
 
Das ist auch nicht meine Absicht, wir müssen es ja auch erklären können und da hilft nur ein fertiger Code auch wenig
 
Wenn du dich etwas praxisnäher mit dem Thema programmieren auseinandersetzen möchtest empfehle ich dir im Übrigen folgende Website:
https://www.codingame.com/start

Dort werden grundlegende Programmierskills in diversen vorporgrammierten Spielen vermitteln. Du musst dort nur noch einzelne Teile (Spiellogik) programmieren. Das ganze ist nicht so trocken wie der Schulstoff und wenn du dort Erfahrung sammelst ist das Zeug aus dem Unterricht Kinderkram ;) Weiterhin findet man im Netz viel Unterstützung, da dies ein weit bekanntes Projekt ist.

Ein Grundschatz an Englisch ist allerdings Voraussetzung, das ist (auch in Deutschland) die standard Sprache beim Coden ;) Und nun happy coding :)
 
Zuletzt bearbeitet:
Wie oben schon mehrfach erwähnt kannst du natürlich nicht einfach deine enum Definition streichen, und erwarten, dass es danach funktioniert.
Gesetzt dem Fall, dass du im Switch immer noch auf die enum Ausprägungen überprüfst (was an und für sich schon die richtige Idee war - nur falsch umgesetzt), musst du diese nun natürlich auf Integer Konstanten abändern.

Wenn du uns jetzt aber nicht mehr folgen können solltest, würde ich dir empfehlen, gedanklich noch einmal von Vorne zu beginnen, und den generellen Programmablauf als Pseudocode durchgehen - da hat Nero1 in #9 ja schon eine gute Hilfestellung zu gegeben.
Anschließend dann das ganze in C# ummünzen, also entweder deinen vorhandenen Code anpassen oder komplett von null. Wichtig: die Syntax des Switch statements anschauen, und genau verstehen, was warum so im Beispiel funktioniert - Stichwort Datentypen.

Wenn du konkrete Fragen hast gehen wir natürlich auch gerne darauf ein und helfen dir.
 
Zuletzt bearbeitet:
Wie bekomm ich diese Fehlermeldung weg?
Klasse, Delegat, Enumeration, Schnittstelle oder Struktur erwartet. (CS1518)
 
Poste mal deinen aktuellen Code. Eventuell können wir dann ein oder anderen Hinweis geben.
 
using System;

public

{
class Program
{
public static void Main(string[] args)
{
int note =2;

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

//Verarbeitung
switch (note) {
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);
}
}
}
ich weiß es hat sich jetzt nicht soviel geändert
 
Wie wärs endlich mit Codetags?

Und du must natürlich deine "Case"-Zeilen noch anpassen.
 
Was für Dinger?
Wenn ich nur wüsste wie, ich verstehe hier meistens nur Bahnhof
 
Guck in Post #2, damit dein Code aussiehet wie in Post #22
 
Code:
using System;

public 
	
{
	class Program
	{
		public static void Main(string[] args)
		{
			int note =2;
			
		//Eingabe
		Console.WriteLine ("Geben Sie die Note als Zahl ein: ");
		
		//Verarbeitung
		switch (note) {
					    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);
		}
	}
}
so, oder wie?
 
Genau ;)

Ändert aber nix an dem eigentlichen Problem, dass deine Abfragen nicht stimmen. Bringt ja nix, nach dem enum zu Fragen, wenn es nicht mehr existiert.
 
ich muss irgendwie nach int fragen (wenn ich die post richtig verstanden habe), aber ich hab so null Plan wie
 
Guck dir den Code in Post #22 noch mal genau an.

Hinweis:
HTML:
case 1:
case 2:
.
.
.
Ist keine Nummerierung.
 
Siehe Beitrag #22.
" note.1" etc. kommt jeweils weg. Dein int fragst du ja über case ab. "case 1" ist beispielsweise die Abfrage, ob int den Wert 1 hat.
 
Das nach Case1,2,3 nichts mehr dahinter steht oder was meinst du?
Wenn ich jetzt note.1 lösche usw. verlangt er immernoch nach einer: Klasse, Delegat, Enumeration, Schnittstelle oder Struktur erwartet. (CS1518)
 
Ja, genau. Das brauchst du nicht.
Case 1,2,3 steht dafür, dass int den Wert 1,2,3 hat. Das ist nicht der "1. Fall", sondern der Wert ist "1".
 
Genau! Der Teil ist so oder so falsch.
Entweder fragst du nach dem enum:

case note.1:

oder nach dem integer:

case 1:
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben