Hallo Matthias,
Warum sollte ich denn, wenn eine Zahl erkannt wurde, true zurückgeben, ich will doch, daß das Abschicken dann abgebrochen wird, muß ich dafür nicht ein false zurückgeben?
Du hast die Absicht eine Fehlersituation zu prüfen, prüfst aber auf Korrektheit. Das macht die Logik kompliziert.
Tatsächlich hast Du noch ein paar Probleme in Deiner for-Schleife.
So wie ich das sehe, prüfst Du nur ein Zeichen und beendest dann über return die Schleife.
Du soltest ausserhalb der Schleife eine Variable definieren, in der Du das Ergebnis der Prüfung speicherst. Dafür empfiehlt es sich, die Abfrage so zu gestalten, dass Du auf den Bereich ausserhalb von Zahlen testest. Dann reicht ein negativer Treffer um die Nicht-Korrektheit festzustellen. Wenn Du auf den gültigen Bereich bei jedem einzelnen Zeichen prüfst, musst Du die Anzahl der korrekten Treffer zählen und hinterher mit der Länge vergleichen, um feststellen zu können, ob zwischendurch ein falscher Wert da war.
Überprüfe auch einmal die Bedingung Deiner for-Schleife. length enthält einen um 1 größeren Wert, wenn Du bei Null anfängst zu zählen. Trage ein length-1.
Dann kann ich mich noch undeutlich an meine ersten C-Erfahrungen erinnern. Da war es - man möge mich berichtigen - so, dass bei ++i der Schleifenzähler VOR dem Durchlauf um 1 erhöht wird und bei i++ NACH dem Durchlauf. Das könnte dazu führen, dass Du das erste Zeichen nie prüfst und ein nicht vorhandenes Zeichen am Ende zuviel prüfst.
Bau mal entsprechende Alerts ein, um das zu überprüfen.
Gruß Günter