C# Case-Anwendung wie geht das?

Status
Für weitere Antworten geschlossen.
danke, aber er verlangt immer noch nach Klasse, Delegat, Enumeration, Schnittstelle oder Struktur erwartet. (CS1518)
Wie bekommt man das weg ich habe doch jetzt integer
 
Poste jetzt noch mal deinen Code.
 
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: 
					    Console.WriteLine("sehr gut");
					    break;
					    case 2:
					    Console.WriteLine("gut");
					    break;
					    case 3: 
					    Console.WriteLine("befriedigend");
						break;
						case 4:
						Console.WriteLine("ausreichend");
						break;
						case 5:
						Console.WriteLine("mangelhaft");
						break;
						case 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);
		}
	}
}
 
Wenn ich den Code so nach Visual Studio kopiere funktioniert er.
Capture.PNG
 
Und was muss ich ändern das er auch in Sharpdevelop funktioniert?
 
Ich habs gerade mal in Sharpdevelop (Version 5.1.0; portable) getestet, da kommen auch bei mir die von dir beschriebenen Fehler zustande.

Es gibt da ein Problem mit dem Block, den du in Zeile 5 öffnest und auf der 48 wieder schließt. Entferne mal die beiden entsprechenden Zeilen.
Dann betrifft das public Keyword direkt deine Klasse:
Code:
public class Program
{
...
...
}

Für die Zukunft:
Schreib doch bitte bei den Fehlern, die bei dir auftreten, die zugehörige Zeilennummer mit dazu. Das ist für uns dann deutlich besser nachzuvollziehen.

Edit: Ist ja auch kein Wunder, wenn es bei Nilson läuft: da wurde der Fehler laut Screenshot ja schon korrigiert. =)
 
Zuletzt bearbeitet:
Ok, danke
jetzt muss ich es nurnoch irgendwie schaffen die note universell zugestalten, also nicht sowas wie int=1 usw.
 
Zuletzt bearbeitet:
Das ist schon mal der richtige Ansatz.
Dann beschreib doch mal umgangssprachlich, was das Programm machen soll, damit die Note im Programm nicht statisch verankert ist.
 
Das Programm soll halt wenn ich 1 eingebe, sehr gut ausspucken und bei 2 gut usw.. Ich würde sagen das Programm soll die verschiedenen case solange miteinander abgleichen bis halt das passende "Paar" gefunden wird
 
Probiers mal damit:

Code:
 int note = 0;

        //Eingabe

        Console.WriteLine("Geben Sie die Note als Zahl ein: ");
        int.TryParse(Console.ReadLine(),out note);
 
Genau, was du also brauchst, ist eine Funktion, die eine Nutzereingabe einliest und den eingelesenen Wert als Integer in deine Variable note legt.

Analog zu der von dir verwendeten Ausgabe Methode
Code:
Console.WriteLine ("Geben Sie die Note als Zahl ein: ");
gibt es dafür in C# ein Einlesefunktion.

Den Namen dieser Methode kannst du dir jetzt auch schon denken: Console.ReadLine().

Problem dabei: diese Methode gibt einen String (also eine Zeichenkette) zurück. Was du aber brauchst ist ein Integer (weil du deine note ja mit "int note;" ja als diesen Datentyp deklariert hast.)

Diesen musst du erst mal "parsen" - also den Datentyp umwandeln.
Das ist genau der Schritt, den dir Nilson jetzt bereits vorgegeben hat.

Da man aber zum Beispiel auch bei der Nutzereingabe beliebigen Text schreiben kann, bei welchem die Funktion dann keine Ganzzahl mehr daraus ableiten kann, kann dieser Vorgang schiefgehen.

Die TryParse Funktion gibt einen Boolen zurück (also entweder true oder false), ob die Umwandlung geklappt hat. Das kannst du gegebenenfalls abfangen mit einem if um dem Nutzer im Falle eines Fehlschlags mitzuteilen, dass seine Eingabe nicht zulässig war.
 
Was meinst du? Funktioniert doch.
 
Dann musst du halt deine console.writeline in Ordnung bringen
 
Ja wenn es dir um die Reihenfolge der Ausgabe geht, dann musst du diese halt auch im Quellcode so anordnen, dass sie den Text wie erwünscht ausgeben - was zuerst dasteht, wird auch zuerst ausgeführt.
 
und wie kann ich jetzt mangelhaft Note als Text: zu Note als Text: mangelhaft umändern sonst stimmt es jetzt
Danke, jetzt läuft es einwandfrei, nurnoch 4 solche Beispiele die ich lösen muss :D
Ergänzung ()

Wie bringt man bei so einer Case-Anwendung z.b das Alter so mitrein?
 
Zuletzt bearbeitet:
Ich nehme mal an das Alter ist eine Ganzzahl? In diesem fall kannst du es genau wie bisher auch auf einen Int abstrahieren.

Ob deine Variable nun "note" oder "alter" heißt, ist dem Computer relativ egal. Der bekommt beim Ausführen deines Programms gar nicht mehr mit, wie du die Variablen benannt hast, das läuft alles viel abstrakter (aber das führt jetzt zu weit).
 
Zuletzt bearbeitet:
Ja, das Alter ist eine ganze Zahl und wenn jetzt was von irgendwas abändigen ist. Also der Preis vom Alter z.B.
 
Bitte was? :watt:
 
Status
Für weitere Antworten geschlossen.

Ähnliche Themen

Antworten
10
Aufrufe
763
K
Antworten
13
Aufrufe
3.233
K
Antworten
18
Aufrufe
2.079
R
Zurück
Oben