C# Zahleninhalte zweier Textboxen miteinander vergleichen

alex_00

Cadet 2nd Year
Registriert
Dez. 2016
Beiträge
31
Hallo,

und zwar habe ich folgenden Fall: Ich erstelle momentan einen Spielplan mit einer Tabelle für eine Fußballliga. EditBox1 sind die geschossenen Tore der 1. Mannschaft, EditBox2 die der 2. Mannschaft. Der Ausschnitt des Quellcodes sieht so aus:

private void button1_Click(object sender, EventArgs e)
{
int Zahl1 = Convert.ToInt32(textBox1.Text);
int Zahl2 = Convert.ToInt32(textBox2.Text);

if (Zahl1 > Zahl2)
{ label1.Text = label1.Text + 3; }
}

Gebe ich dann z.B. 2:1 ein, wird die 3 einfach an die Zahl, die im Label steht drangehängt. Ich möchte allerdings, dass die Zahlen addiert werden. Weiß jemand wie das geht? Wäre sehr nett. Danke :)
 
um mal bei deinem code zu bleiben:
if (Zahl1 > Zahl2)
{ label1.Text = Convert.ToInt32(label1.Text) + 3; }
}

könnte schon funktionieren... aber ich hab noch nie eine Zeile C# geschrieben... deshalb könnte ;-)

vielleicht noch ne kurze erklärung warum es nicht funktioniert:
Datentypen. Du möchtest, dass zwei Zahlen (Int) addiert werden. 1+2=3.
Blöd ist, dass der "+" operator auch für Zeichenketten (Strings) definiert ist. Da macht dieser + operator: "1"+"2"="12".
Typ label1.Text ist vermutlich ein String, deshalb meine Vorschlag zur Konvertierung zu int32.

was sicher funktioniert und vielleicht verständlicher, weil ich immer explizit sage wie ein Wert umgewandelt werden soll:
if (Zahl1 > Zahl2)
{
int aktuellerWert = Convert.ToInt32(label1.Text);
int neuerWert = aktuellerWert + 3;
label1.Text = Convert.ToString(neuerWert);
}
 
Zuletzt bearbeitet:
Anfängerfehler ;)

Du konvertierst zum Vergleichen der Zahlen zu Beginn die Eingaben in den Textfeldern in Integers (also Zahlen, mit denen man auch rechnen kann... mit Text kann man ja nicht rechnen).
Dann vergleichst du die Größe der Zahlen, greifst aber im Erfolgsfall direkt wieder auf die Textboxen zurück. Und "Text addieren" heißt eben "Text anfügen". Denn der Rechner weiß nicht, wie er Texte addieren soll. Was ist denn "Hallo" + "Tschüss"? Etwa 42? Nein, es ist "HalloTschüss". Das gilt auch für Zahlen, die als Text gespeichert sind, und deswegen reagiert er so, wie er es tut. Er schreibt die Zahl einfach hinten dran.

Zur Lösung: du musst die Zahlen (Zahl1 und Zahl2) addieren (entweder erst über eine dritte Variable oder "on the fly") und diese Zahl dann dem Label zuweisen. Sinnvollerweise konvertierst du sie vorher auch wieder in Text, obwohl das vermutlich dein Compiler für dich erledigt.
 
Ist "label1.Text" etwas, dass character oder strings enthält? Dann sollte doch für
Code:
"vorherigerEintrag" + '3'
das korrekte Ergebnis
Code:
"vorherigerEintrag3"
richtig sein und somit der Rechner korrekt gerechnet haben, oder?
Kenne mich mit C# nicht allzu gut aus, aber vermutlich darfst du zuvor die Zahl im String/Charakter (label1.Text) in eine Zahl (int, double, ...) umwandeln und dann erst die Zahl 3 (als int, double, ...) addieren. Eine andere Möglichkeit wäre anhand der Verteilung/Anordnung der character in C# den jeweiligen korrekten Buchstaben zu bestimmen, was jedoch komplizierter, fehleranfälliger und umständlicher ist.
Ergo: Wandle den Inhalt des Textes in eine Zahl um, addiere dazu drei hinzu und konvertiere diese Zahl zurück zu einem Buchstaben.
 
Zuletzt bearbeitet:
Zurück
Oben