charAt(x)-Abfrage lässt bei Strings<x das Pgrogramm abstürzen. Kann man das verhindern?

Apfelsaft666

Mitglied
Hallo 🙂

Hoffentlich gab es das Thema nicht bereits - unter dem Begriff "charAt" habe ich nichts Vergleichbares gefunden. Das Problem:

Ich habe einen String in meinem Programm, den ich mit der Zeile

Java:
if (eingabeZeile.charAt(1)==',' | eingabeZeile.charAt(2)==',')

abfrage (sagt man abfragen..?). Leider erzeugt die Zeile einen Absturz, falls der String aus 0-2 Zeichen besteht, weil charAt dann ins Leere greift - aber in dem String MUSS alles Mögliche stehen können, ohne dass das Programm abstürzt. Nun ist die Frage...

1. Kann man das irgendwie umgehen und z.B. charAt(1) dazu bringen, einen String zu tolerieren, der nur aus einem Zeichen besteht? Meine schöne else-Fehlermeldung erscheint gar nicht, charAt bricht dann gleich ab.

2. Gibt es eine andere if-Funktion, mit der ich fragen kann, ob es sich bei der Eingabe (die in Tokens zerlegt wird) um das Format "Zahl komma Zahl" handelt? Es geht darum, ein Minesweeper-artiges Spiel, dass durch Eingabe zweier Zahlenkoordinaten beginnt, gegen Falscheingaben immun zu machen.

Ich hoffe, die Frage ist verständlich formuliert - vielen Dank fürs Lesen.
 
Zuletzt bearbeitet:
Java:
package snippet;

import java.util.regex.Pattern;

public class TestCondition {

	public static void main(String[] args) {

		String input = "0,0";

		if ((input.length() >= 2 && input.charAt(1) == ',')
				|| (input.length() >= 3 && input.charAt(2) == ',')) {
			System.out.println("contains ',' ");
		}
		
		// Besser:
		String[] arr = { ",0", "0,0", "1000,1000", "500,300", "500,1", "0, ",
				"a,bb", "a,b" };
		for (String test : arr) {
			//Siehe hierzu: [url=http://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html]Pattern (Java Platform SE 7 )[/url]
			if (Pattern.matches("\\d+\u002C\\d+", test)) {
				System.out.println(test + " matches!");
			} else {
				System.out.println(test + " doesn't match!");
			}
		}

	}

}
 
Geilo! Das war genau das, was ich gebraucht hab - das ist mir nicht eingefallen, einfach gleichzeitig die String-Länge abzufragen. Aber das algorhythmische Denken kommt hoffentlich noch.

Vielen Dank! Möglicherweise ist für Forenneulinge der Dank-Button noch nicht nicht aktiv - würde ich einen sehen, würde ich den gerne anklicken.
 

Zurück
Oben