Laden...

Problem mit if in Schleife

Erstellt von computer_case vor 15 Jahren Letzter Beitrag vor 15 Jahren 1.469 Views
C
computer_case Themenstarter:in
51 Beiträge seit 2007
vor 15 Jahren
Problem mit if in Schleife

hi,
irgendwie funzt dieser code nicht...!

if (befehl == "gimmemusic")
                { 
                    //Noten
                    int c = 262;
                    int d = 294;
                    int e = 330;
                    int f = 349;
                    int g = 392;
                    int a = 440;
                    int h = 494;

                    //Länge
                    int achtel = 250;
                    int virtel = 500;
                    int halbe = 1000;
                    int ganze = 2000;

                    //Alle meine Entchen
                    Console.Beep(c, virtel);
                    Console.Beep(d, virtel);
                    Console.Beep(e, virtel);
                    Console.Beep(f, virtel);
                    Console.Beep(g, halbe);
                    Console.Beep(g, halbe);
                    //Schwimmen auf dem See
                    Console.Beep(a, virtel);
                    Console.Beep(a, virtel);
                    Console.Beep(a, virtel);
                    Console.Beep(a, virtel);
                    Console.Beep(g, ganze);//Wiederhohlung
                    Console.Beep(a, virtel);
                    Console.Beep(a, virtel);
                    Console.Beep(a, virtel);
                    Console.Beep(a, virtel);
                    Console.Beep(g, ganze);
                    //Köpchen in das Wasser
                    Console.Beep(f, virtel);
                    Console.Beep(f, virtel);
                    Console.Beep(f, virtel);
                    Console.Beep(f, virtel);
                    Console.Beep(e, halbe);
                    Console.Beep(e, halbe);
                    //schwänzchen in die Höh
                    Console.Beep(d, virtel);
                    Console.Beep(d, virtel);
                    Console.Beep(d, virtel);
                    Console.Beep(d, virtel);
                    Console.Beep(c, ganze);
                }

3.430 Beiträge seit 2007
vor 15 Jahren

Hi,

hi,
irgendwie funzt dieser code nicht...!

ja, ein bisschen mehr Informationen könntest du uns schon geben.
Was genau funktioniert nicht. Beept er nicht so wie du willst, oder beept er gar nicht??

Siehe:[Hinweis] Wie poste ich richtig? Punkt 5

//EDIT: Das einzigste was mir hir auffällt ist diese If-Abfrage. Kann es sein, dass er überhaupt nicht in diese Abfrage rein geht?? Schreibe mal anstatt befehl=="gimmemusic" einfach true rein.... dann müsste das schon gehen.
Vielleicht hast du auch noch einen anderen Fehler, dass er gar nicht bis zu diesem CodeTeil kommt

mfg
michlG

C
computer_case Themenstarter:in
51 Beiträge seit 2007
vor 15 Jahren

nee, am if liegt es nicht...
hab noch andere if - abfragen drin, die gehen alle.
also ich habs mit try, catch gemacht das ganze und es geht auch alles, bis auf diese "if - abfrage". Ich hab noch eine fehlermeldung eingebaut, wenn der befehl nicht existiert, und diese kommt auch, wenn ich "gimmemusic" schreibe...!

J
193 Beiträge seit 2007
vor 15 Jahren

Da "befehl" vom Typ String ist, solltest du besser mit befehl.Equals() den Wert prüfen, anstatt mit ==.

49.485 Beiträge seit 2005
vor 15 Jahren

Hallo computer_case,

irgendwie funzt dieser code nicht...!

Du hast leider immer noch nicht die nötigen Infos geliefert. Siehe [Hinweis] Wie poste ich richtig? Punkt 5. Davon abgesehen wird das ein Fehler sein, den du im Debugger leicht selbst finden kannst.

Hallo Jack_AI,

bei C# ist == für String vollkommen ok. Equals für Strings zu verwenden ist eher ungewöhnlich.

herbivore

C
computer_case Themenstarter:in
51 Beiträge seit 2007
vor 15 Jahren

also, das wäre der gesamte code!

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main()
        {
            Console.WriteLine("Willkommen bei der Konsole!");
            Console.WriteLine("");
            for (; ; )
            {
                string befehl;
                Console.Write("Befehl >");
                befehl = Console.ReadLine();



           




                //Datei erzeugen
                if (befehl == "erzeugen")
                {
                    try
                    {
                        string inhalt;
                        Console.WriteLine("Geben sie den Inhalt der datei an: ");
                        inhalt = Console.ReadLine();
                        string path;
                        Console.WriteLine("Pfad");
                        path = Console.ReadLine();
                        using (StreamWriter sw = new StreamWriter(path))
                        {
                            sw.Write(inhalt);
                        }
                        Console.WriteLine("Erzeugen erfolgreich!");
                        Console.ReadKey();
                    }
                    catch
                    {
                        Console.WriteLine("Fehler!");
                        Console.ReadKey();
                    }
                }




               




                //beenden
                if (befehl == "beenden")
                {
                    break;
                }

              
             

                //^^2
                if (befehl == "gimmemusic")
                { 
                    //Noten
                    int c = 262;
                    int d = 294;
                    int e = 330;
                    int f = 349;
                    int g = 392;
                    int a = 440;
                    int h = 494;

                    //Länge
                    int achtel = 250;
                    int virtel = 500;
                    int halbe = 1000;
                    int ganze = 2000;

                    //Alle meine Entchen
                    Console.Beep(c, virtel);
                    Console.Beep(d, virtel);
                    Console.Beep(e, virtel);
                    Console.Beep(f, virtel);
                    Console.Beep(g, halbe);
                    Console.Beep(g, halbe);
                    //Schwimmen auf dem See
                    Console.Beep(a, virtel);
                    Console.Beep(a, virtel);
                    Console.Beep(a, virtel);
                    Console.Beep(a, virtel);
                    Console.Beep(g, ganze);//Wiederhohlung
                    Console.Beep(a, virtel);
                    Console.Beep(a, virtel);
                    Console.Beep(a, virtel);
                    Console.Beep(a, virtel);
                    Console.Beep(g, ganze);
                    //Köpchen in das Wasser
                    Console.Beep(f, virtel);
                    Console.Beep(f, virtel);
                    Console.Beep(f, virtel);
                    Console.Beep(f, virtel);
                    Console.Beep(e, halbe);
                    Console.Beep(e, halbe);
                    //schwänzchen in die Höh
                    Console.Beep(d, virtel);
                    Console.Beep(d, virtel);
                    Console.Beep(d, virtel);
                    Console.Beep(d, virtel);
                    Console.Beep(c, ganze);
                }

                //Fensterinhalt löschen
                if (befehl == "säubern")
                {
                    Console.Clear();
                }

                else
                {
                    Console.WriteLine("Unbekannter Befehl!");
                    Console.ReadKey();
                }


            }
        }
    }
}
C
computer_case Themenstarter:in
51 Beiträge seit 2007
vor 15 Jahren

Und wie schon gesagt, kommt einfach die meldung "Unbekannter Befehl"
Was ja komisch ist, denn ich hab die fehlermeldung da gar nicht eingebaut...

49.485 Beiträge seit 2005
vor 15 Jahren

Hallo computer_case,

das sieht nach fehlenden Grundlagen aus. Bitte beachte [Hinweis] Wie poste ich richtig? Punkt 1.1.1.

"Unbekannter Befehl!" kommt immer dann, wenn der Befehl nicht "säubern" und nicht "beenden" ist. Das ergibt sich aber unmittelbar aus der Struktur deiner if-Abfragen. Verwende if else if oder continue.

herbivore

C
computer_case Themenstarter:in
51 Beiträge seit 2007
vor 15 Jahren

oh ja danke!!

C
computer_case Themenstarter:in
51 Beiträge seit 2007
vor 15 Jahren

so, jetzt gehts auch!

467 Beiträge seit 2007
vor 15 Jahren

Nur so nabenbei, ich halte es für ungut(ich irre ich sicher) die Variable in der Schleife immer neuzudeklarieren, da die Variable in der Schleife immer neu in den Seicher geschrieben wird.(ist doch so, oder?)

Gelöschter Account
vor 15 Jahren

integer usw. werden eh nur in den stack gelegt. da macht es eigendlich kaum unterschiede, wenn man sie lokal anlegt. große objekte hingegen sind da anders zu handhaben.

ps:
for (; ; ) == while (true)

nebenbei würde ich trotzdem innerhalb der abfrage die abbruchbedingung definieren, da man ansonsten erst im code die bedignung suchen muss.

M
205 Beiträge seit 2008
vor 15 Jahren

Nur so nabenbei, ich halte es für ungut(ich irre ich sicher) die Variable in der Schleife immer neuzudeklarieren, da die Variable in der Schleife immer neu in den Seicher geschrieben wird.(ist doch so, oder?)

sowas optimiert ja ohnehin der compiler von c#