# Fehlermeldung String index out of range??



## salexal (10. Nov 2009)

Hallo!

Bin Programmieranfänger und soll ein Programm schreiben, welches Zahlen verschiedener Zahlenbasen zwischen 2 und 16 beliebig in andere Basen ausgibt.

Hier die ersten Überlegungen zu diesem Programm:

public class Zahlenbasen {
	public static void main (String [] args) {

		Out.print("Geben Sie eine Zahl ein:");

		int Ein = In.readInt();
		String str = Integer.toString(Ein);
		Out.print("Geben Sie die Basis ein:");
		int Basis = In.readInt();
		Out.print("Gewuenschte Ziel Basis:");
		int ZBasis = In.readInt();
		String Dual = " ";
		int res;
		int y = 0;
		int x = Basis;
		res = x;



		if (Basis == 10 && ZBasis == 2){
			while (Ein > 0) {
				Dual = Ein%2+Dual;
				Ein=Ein/2;
			}
			Out.print(Dual);
		}



		else if(ZBasis ==10 && Basis ==2) {
			for(int i = 0; i <= str.length(); i++) {
				char zeichen = str.charAt(i);
				res = zeichen* (res*y);
				y++;

			}
			Out.print(res);	
		}
	}
}



Die erste Umrechnung Dezimal in Dual funktioniert, doch die Umrechnung Dual in Dezimal gibt mir immer den Fehler: Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 7
Kann mir bitte jemand helfen?
Was hat diese Fehlermeldung zu bedeuten und wie kann ich diese vermeiden?

Lg alex


----------



## eRaaaa (10. Nov 2009)

[c]for(int i = 0; i <= str.length(); i++) {[/c]

da muss das gleichheitszeichen weg.


String s = "hallo"; => lenght() = 5, o ist aber index 4 =) (0-4)


----------



## salexal (10. Nov 2009)

Danke für die schnelle antwort!

Habe das = entfert, jetzt habe ich keine Fehlermeldung mehr aber die Ausgabe sind dann nur 0-len.
Weist du vielleicht was in meiner schleife noch falsch sein könnte?

lg alex


----------



## Michael... (11. Nov 2009)

was ist die Variable res? Die ist nicht initialisiert! --> 0

Ausserdem ist zu beachten, dass String#charAt(...) einen char liefert der nicht dem Wert des Zeichens entspricht:
char '0' entspricht int 48


----------

