Wyjątek StringIndexOutOfBoundsException - dlaczego nie jest zawsze tworzony?

0

Mam problem z wyjątkeim StringIndexOutOfBoundsException. Mianowicie, gdy zmienna jTF1 ma wartość "" wyrzuca mi wyjątek. Gdy ta zmienna ma wartość na przykład "3" też wyrzuca mi wyjątek, a gdy zmienna ma wartość "34" nie wyrzuca wyjątku, ale wyświetla wartość "3". Nie wiem o co chodzi :(, więc proszę o jak najszybszą pomoc.

Kod programu:

	private void setGrades(){
		if(jTF1.getText().length() > 0)
			if(jTF1.getText().charAt(1) <= 6 && jTF1.getText().charAt(1) >= 1)
				w1[0] = jTF1.getText().charAt(1);
		
		System.out.println(w1);
	}

Liczę na Was wszystkich. :)

P.S. Jak byście nie wiedzieli skąd te metody to zmienna jTF1 jest typu JTextField.
P.S. To nie jest cały program!!!

1

Sprawdzasz length() > 0, ale linijkę niżej pobierasz wartość z jTF1.getText().charAt(1), indeks zaczyna się od zera. Jeśli chcesz pobrać pierwszą literę stringu zamień 1 na 0. Analogicznie jeśli będziesz kiedyś chciał pobrać ostatnią literę stringu to piszesz jTF1.getText().charAt( jTF1.getText().lenght() - 1 ).
Po drugie nie wiem czy zdajesz sobie sprawę ale porównując wartość char z integer, tak naprawdę porównujesz kod ASCII tego znaku czyli warunek:

 
if("3".charAt(0) == 51){
    return true;
} else {
    return false;
}

zwróci wartość true.
//Poprawiłem kolorowanie, bogdans

1 użytkowników online, w tym zalogowanych: 0, gości: 1