Binär programmieren C#?

4 Antworten

string binär = "";
            bool incorrectInput = false;


            while (!incorrectInput)
            {
                Console.Write("Geben Sie eine Binärzahl ein:    ");
                binär = Console.ReadLine();


                incorrectInput = true;


                for (int i = binär.Length - 1; i >= 0; i--)
                {
                    if (binär[i] != '0' && binär[i] != '1')
                    {
                        Console.WriteLine(binär + "ist keine gültige Binärzahl!");
                        incorrectInput = false;
                        break;
                    }
                }


            }


            Console.WriteLine(binär +" ist eine gültige Binärzahl!");


            Console.ReadLine();



Du musst die 1 und 0 in der If-Abfrage in Anführungszeichen setzten. Sonst wird davon ausgegangen, dass es sich um Zahlen handelt (Vermutlich Integer) und eine Zahl ist immer ungleich einem String.

Edit: Ich meine natürlich die While-Schleife. (Du solltest aber darauf auf jeden Fall eine If-Abfrage machen)

Damit das funktioniert müsstest du

while (binär[i] != 1 || binär[i] != 0)

in

while (binär[i] != 49 || binär[i] != 48)

bzw.

while (binär[i] != '1' || binär[i] != '0')

ändern.

Woher ich das weiß:Hobby
01df5e76  20.02.2021, 13:14

Ach du meine Fresse, das seh ich ja jetzt erst:

Mach aus dem || ein && und ersetze while durch if.

Wobei... Der Code ist dermaßen wartungsbedürftig, da wäre es weniger Aufwand, das ganze von 0 an neu zu schreiben.

0

Deinen restlichen Code kommentiere ich mal nicht.

while (binär[i] != 1 || binär[i] != 0

Was sagt denn die Bedingung im Schleifenkopf?

Du hast hier ein oder, ganz primitiv gesagt, sche.

Du brauchst hier ein und. Wenn eine Zahl nicht gleich 1 und nicht gleich 0 ist, DANN ist es ungültig.

Die 1 und 0 muss in Anführungszeichen auch noch. Da du dann einen char kriegst...