O
OmeGa
Gast
Hallo!
Ich habe einen Fehler in meinem Programm. Es werden immer RGB Anteile eingelesen....also zuerst der R-Anteil, dann der G-Anteil und danach der B-Anteil. Das wird dann umgewandelt in Binär und dann wieder zurück zu einem Zahlencode vom Typ Integer. Wenn ich bei den RGB Anteilen 0 0 0 oder 255 0 0 oder einfach nur ein Anteil den Wert 0 hat dann bekomm ich eine Fehlermeldung => "Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 23"
Hier mal die Klasse in der der Fehler auftritt:
Ich hoffe ihr könnt mir so schnell wie möglich helfen.
mfg
Ich habe einen Fehler in meinem Programm. Es werden immer RGB Anteile eingelesen....also zuerst der R-Anteil, dann der G-Anteil und danach der B-Anteil. Das wird dann umgewandelt in Binär und dann wieder zurück zu einem Zahlencode vom Typ Integer. Wenn ich bei den RGB Anteilen 0 0 0 oder 255 0 0 oder einfach nur ein Anteil den Wert 0 hat dann bekomm ich eine Fehlermeldung => "Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 23"
Hier mal die Klasse in der der Fehler auftritt:
Code:
import java.util.*;
import java.lang.*;
public class RGB{
private static HashMap farben;
/** Creates a new instance of RGB */
public RGB() {
farben = new HashMap();
}
//Neue Farbe definieren.
public void add(String farbName, int[] farbWerte){
farben.put(farbName, farbWerte);
}
//Liefert die Farbanteile zusammengesetzt zurück
public int farbAnteile(String farbName){
//Überprüfen ob die Farbe definiert ist
if(farben.containsKey(farbName) == false){
throw new IllegalArgumentException("Die Farbe ist nicht definiert!");
}else{
int farbWerte[] = (int[]) farben.get(farbName);
//Werte in Binärcode umwandeln
String wert = "00000000";
String wert1 = Integer.toBinaryString(farbWerte[0]);
String wert2 = Integer.toBinaryString(farbWerte[1]);
String wert3 = Integer.toBinaryString(farbWerte[2]);
//Werte Zusammensetzen
String zusammen = wert + wert1 + wert2 +wert3;
//Rechnet wieder vom Binärcode um.
double farbcode = 0;
for(int i = 23, j = 0; i > 0; i--, j++){
if(zusammen.charAt(i) == '1'){
farbcode += Math.pow((double) 2, (double) j);
}
}
return (int) farbcode;
}
}
//Mit dieser Methode kann überprüft werden ob der Eintrag in der Map vorhanden ist.
public boolean isElement(String farbName){
return farben.containsKey(farbName);
}
//Liefert den Inhalt der Map in druckbarer Form als Zeichenkette zurück.
public String toString(){
String ausgabe = "";
for(int i = 0; i < farben.keySet().size(); i++){
Iterator it = farben.keySet().iterator();
String key = (String) it.next();
int values[] = (int[]) farben.get(key);
ausgabe += key + ": " + values[0] +" "+ values[1] +" "+ values[2];
}
return ausgabe;
}
}
Ich hoffe ihr könnt mir so schnell wie möglich helfen.
mfg