Semikolon nach While?
-
Hi!
Wollte als Übung einen kleinen 1x1 Rechner schreiben. Allerdings tritt ein mysteriöser Fehler auf. Und zwar sagt mir der Compiler, ich solle nach der while-Bedingung ein Semikolon machen. Zeile 25: While(Nochmal == true) <-- da ein Semikolon? Das wäre doch syntaktisch falsch! Ich benutze den Sharp Develop Compiler. Weiss jemand was ich falsch gemacht habe?
using System; using System.Collections.Generic; namespace Rechner { class MainClass { public static void Main(string[] args) { int Reihe; char Antwort; bool Nochmal = true; Console.WriteLine("Willkommen zu Term!nX' 1x1 Rechner!"); Console.WriteLine(); While(Nochmal == true) { Console.WriteLine("Welche Reihe des 1x1 wollen Sie sehen?"); Console.WriteLine(); Reihe = Console.ReadLine(); Console.WriteLine(); Console.WriteLine("Die " + Reihe + "er ist:"); Console.WriteLine(); for (int i = 0; i < 11; i++) { ConsoleWriteLine(Reihe * i); Console.WriteLine(); } Console.WriteLine("Möchten Sie noch eine Reihe sehen? J/N"); Console.WriteLine(); Antwort = Console.ReadLine(); if (Antwort == J) { Nochmal = true; } else { Nochmal = false; } } } } }
-
Hmm, darf man while() denn groß schreiben?
-
Oh, nein darf man nicht. Ist mir nicht aufgefallen, weils trotzdem farbig markiert wurde. Nun wird mir aber bei der Zahleneinlesung gesagt:
Der Typ string könne nicht implizit in int umgewandelt werden. Das Console wird dabei dann rot unterschlängelt. Außerdem kommt nach der If-Abfrage: Der Name j sei nicht im kontext vorhanden. Sorry, aber da habe ich keine Erklärung für. Gibt es für das Einlesen von Zahlenwerten einen anderen Befehl als Console.ReadLine(); ?
-
ReadLine() liefert einen String zurück, den musst du schon konvertieren
z.B. so:Reihe = Convert.ToInt32(Console.ReadLine().Trim());
Dabei wandelt Convert.ToInt32(irgendwas) das irgendwas in einen Int32 um, oder wenn nicht möglich wird ne Exception geworfen.
Das .Trim() bewirkt das Leerzeichen/Sonderzeichen(wie Zeilenumbruch-Zeugs) am Anfang und Ende des Strings entfernt werden. k.A. ob man das braucht.
Wenn du Exceptions nicht magst, kannst du dir auch Int32.TryParse() angucken...und das Zeichen solltest du als Zeichen markieren, sonst sucht der Compiler nach ner Variable J:
if (Antwort == 'J')
-
Danke, jetzt funktioniert alles. Das zweitere war schluderei