Hallo,
ich steh seit zwei Tagen total auf dem Schlauch.
Ich soll die in einer Textbox eingegeben ganze Zahl darauf prüfen ob sie eine Schnapszahl ist (111, 222, usw.). Mir fällt kein Ansatz ein wie ich daran gehen könnte. Ich hatte überlegt die eingegeben Zahl in jeweils eine Zahl zu splitten und diese dann mit einander zu vergleichen, aber ich finde keinen Ansatz wie ich das machen kann. Könnte mir jemand im groben auf die Sprünge helfen?
Eine Möglichkeit:
Vergleichen könntest du sie auf integer Basis (was etwas komplizierter ist, denn der Computer arbeitet auf binarbasis und du willst auf zehner basis vergleichen) oder auf string Basis.
Für den Anfang ist die string Variante vermutlich einfacher. Grob: Wandele die Zahl in einen string um, schaue für jeden char ab dem zweiten ob er gleich dem vorderen ist.
Also ich habe es so gemacht und wenn ich es Debugge und in einer textBox ausgebe funktioniert es auch. Gibt es Verbesserungsvorschläge?
private bool PruefeSchnapszahl(int schnaps)
{
schnaps = Convert.ToInt32(textBox1.Text);
string zahl = Convert.ToString(schnaps);
bool istSchnapszahl = true;
for (int i = 0; i < zahl.Length; i++)
{
if(!(zahl[i] == zahl[zahl.Length - 1]))
{
istSchnapszahl=false;
break;
}
}
return istSchnapszahl;
Also ich habe es so gemacht und wenn ich es Debugge und in einer textBox ausgebe funktioniert es auch. Gibt es Verbesserungsvorschläge?
Ja, das passt so.
Ich würde es so machen :
private bool PruefeSchnapszahl()
{
string zahl = Int32.Parse(textBox1.Text).ToString();
if (zahl.Length < 2) return false;
for (int i = 1; i < zahl.Length; i++) if (zahl[i] != zahl[0]) return false;
return true;
}
Grüße Bernd
Workshop : Datenbanken mit ADO.NET
Xamarin Mobile App : Finderwille Einsatz App
Unternehmenssoftware : Quasar-3
Nein, passt nicht ganz:
private bool PruefeSchnapszahl(int schnaps)
{
schnaps = Convert.ToInt32(textBox1.Text);
string zahl = Convert.ToString(schnaps);
// ...
}
Erst wird eine Zahl als Parameter übergeben, und dann sofort wieder neu zugewiesen, um anschließend wieder in einen Text umgewandelt zu werden!?!
Besser den Text (oder die schon umgewandelte Zahl) übergeben:
private bool PruefeSchnapszahl(string zahl)
{
// ...
}
(und Aufruf dann mittels PruefeSchnapszahl(textBox1.Text)
)
bzw.
private bool PruefeSchnapszahl(int schnaps)
{
string zahl = schnaps.ToString();
// ...
}
Lass den Inhalt der Textbox in einen Integer wandeln. Dann folgende Abfrage über Modulo:
if(INTEGER % 111 == 0 && INTEGER > 99)
{
*machWas
}
Grüße Stoffel
Das paßt aber nur für 3-stellige Zahlen, keine 2-stelligen (= Alter) oder größere (wie z.B. 3333 oder 55555).
Das ist richtig. Aber in der Beschreibung von Apollo56 ist nur die Rede von 111, 222 usw.
Von daher bin ich davon ausgegangen dass nur dreistellige gemeint sind.