C# Verwendung der nicht zugewiesenen lokalen Variablen "answer"

Johnephin

Newbie
Registriert
Nov. 2020
Beiträge
2
Hallo,
Ich habe neu mit programmieren in C# angefangen und brauche hier Hilfe. Ich habe ein simples Mathequiz gemacht, jedoch funktioniert die variable Answer nicht? Das Problem ist: Verwendung der nicht zugewiesenen lokalen Variablen "answer". Wahrscheinlich habe ist es sehr simpel, aber ich komme nicht drauf.
Vielen Dank schonmal im Voraus!
C#:
using System;

namespace Programme_2
{
    class Program
    {
        static void Main(string[] args)
        {
            //Optisches Auftreten
            Console.ForegroundColor = ConsoleColor.Blue;
            Console.Title = "Mathe Quiz";
            //variablen:
            float num1;
            float num2;
            float num3;
            int answer;
            //Frage 1
            Console.WriteLine("Willkommen beim Mathequiz!\nDie erste Frage: \n15+2*5=");
            num1 = Convert.ToSingle(Console.ReadLine());
            if (num1 == 25){
                Console.WriteLine("Richtig!");
                answer = +1;
            }
            else{
                Console.WriteLine("Falsch!");
            }
            //Frage 2
            Console.WriteLine("Frage 2:\n13+4+2+1=");
            num2 = Convert.ToSingle(Console.ReadLine());
            if (num2 == 20){
                Console.WriteLine("Richtig!");
                answer = +1;
            }
            else{
                Console.WriteLine("Falsch!");
            }
            //Frage 3
            Console.WriteLine("Nun zur letzten Frage!\n23*2+13+10");
            num3 = Convert.ToSingle(Console.ReadLine());
            if (num3 == 69){
                Console.WriteLine("Richtig!");
                answer = + 1;
            }
            else {
                Console.WriteLine("Falsch!");
            }
            //Ende
            if (answer< 3){
             Console.WriteLine("Dein Rekord ist " + answer + "gut gemacht.\n Versuch deinen Highscore zu schlagen!");   
            }
            else if (answer == 3){
                Console.WriteLine("Wow! " + answer + "ist die Höchstpunktzahl! \nDu bist ein Matheass!");
            }
            Console.WriteLine("Drücke irgendeinen Knopf um das Spiel zu beenden");
            // Damit es sich nicht sofort schließt
            Console.ReadKey();
        }
    }
}
 
@Johnephin Du musst in Zeile 16 einen initialen Wert zuweisen. Ich schlage 0 vor.

Falls du die variable answer um 1 erhöhen willst, musst du
answer++ schreiben. Nicht =+1
 
  • Gefällt mir
Reaktionen: Johnephin
@DocWindows Vielen Dank!
Ergänzung ()

@DocWindows Jetzt habe ich das Problem das die Punkte sich nicht addieren. Was kann ich da tun?
 
Zuletzt bearbeitet:
Wie DocWindows schon gesagt hat, musst du deine Statements answer = +1 umwandeln entweder in answer++ oder answer += 1 oder answer = answer + 1 (soweit ich das sehe in den Zeilen 23, 32 und 42).

Ansonsten weißt du answer in den if Blöcken immer den Wert 1 zu.
 
Johnephin schrieb:
Jetzt habe ich das Problem das die Punkte sich nicht addieren. Was kann ich da tun?

Kurz zur Erklärung: Wenn du schreibst [Variable] = [Wert] ist das eine reine Zuweisung von Werten. Der Wert, egal was es ist, wird der Variable nur zugewiesen.

Schreibst du Variable = +1, dann wird eine positive 1 zugewiesen.
Schreibst du Variable = -1 wird eine negative 1 zugewiesen.
Man kann addieren indem man Variable++ schreibt, was kurz für Variable = Variable +1 ist, oder (wenn man mehr als 1 addieren will), Variable += 5, was Variable = Variable +5; entspricht.

Subtrahieren geht genauso. Variable-- um 1 abzuziehen oder Variable -= 5 um 5 abzuziehen.

Die Operation(+ , * /) muss hier deshalb VOR der Zuweisung (=) stehen.

Multiplizieren und Dividieren funktioniert hier auch, allerdings nicht in der kürzesten Form Variable** oder Variable// . Beides macht eh keinen Sinn.
 

Ähnliche Themen

Zurück
Oben