Programm-Fehler beim einlesen von RGB werten

Status
Nicht offen für weitere Antworten.
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:
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
 
O

OmeGa

Gast
Hier die komplette Fehlermeldung:

Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 23
at java.lang.String.charAt(String.java:558)
at RGB.farbAnteile(RGB.java:45)
at Grafik.main(Grafik.java:73)
Java Result: 1
 

L-ectron-X

Gesperrter Benutzer
Ich denke mal, dass du hier
Code:
if(zusammen.charAt(i) == '1'){
auf einen Index im String zugreifst, der nicht existiert.
Lass dir mal zum Test den String zusammen in einer println()-Methode ausgeben, um zusehen, was drin steht.
 
N

na-oma

Gast
ich denke, wenn du eine farbe hast, die 0 ist, liefert Integer.toBinaryString(farbWerte[0]);
eine 0 zurück (oder ne andere relativ kurze zahl, kenn die methode ned genau)

dieser string wird ja dann mit andern zusammen in zusammen gespeichert. wenn du dann auf zusammen an stelle 23, also weit hinten zugreifst, ist der string schlicht zu kurz, die stelle 23 gibts ned, weil wertx zu kurz war.

was du vorhast geht sicher eleganter, versteh dein ziel aber immoment nicht!
 
G

Guest

Gast
:shock: Geht's noch komplizierter?
Code:
...
  int farbWerte[] = (int[]) farben.get(farbName);
  return ((farbWerte[0] & 0xFF) << 16) | ((farbWerte[1] & 0xFF) << 8)  | (farbWerte[2] & 0xFF);
...
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Fehler beim Programm Java Basics - Anfänger-Themen 2
K Fehler beim Einfügen eines Programm Icons Java Basics - Anfänger-Themen 6
J Fehler beim Ausführen von Programm Java Basics - Anfänger-Themen 3
R Fehler beim Programm Java Basics - Anfänger-Themen 20
T Fehler beim Kompilieren vom Programm Java Basics - Anfänger-Themen 10
N Interpreter-Fehler Compiler zeigt keine Fehler an, aber das Programm läuft nicht (BlueJ) Java Basics - Anfänger-Themen 2
Jose05 Fehler im Programm feststellen Java Basics - Anfänger-Themen 2
T Mein Programm hat Fehler Java Basics - Anfänger-Themen 4
J Fehler in Programm: Index -1 out of bounds for length 0 Java Basics - Anfänger-Themen 5
L Fehler im Programm bei Ausgabe Java Basics - Anfänger-Themen 21
Z Montageberechnungs programm, finde leider den Fehler nicht Java Basics - Anfänger-Themen 13
T Input/Output Programm terminiert nicht -> stürzt ab, wo Fehler? Java Basics - Anfänger-Themen 3
L Compiler-Fehler Unerklärlicher Fehler in einfachem JSP Programm. Java Basics - Anfänger-Themen 4
snipesss IDE zeigt keine Fehler an, Programm wird jedoch nicht ausgeführt. Java Basics - Anfänger-Themen 18
M Wo ist der Fehler in meinem Programm? Java Basics - Anfänger-Themen 12
? Klassen einfacher Fehler in einem Java Programm. Java Basics - Anfänger-Themen 5
? Methoden Fehler in einfachem Java Programm. Java Basics - Anfänger-Themen 9
M Kleiner unauffindbarer Fehler im Programm Java Basics - Anfänger-Themen 6
J Arrays (Kalender) Fehler im Programm Java Basics - Anfänger-Themen 2
S Fehler im Programm "Menge" Java Basics - Anfänger-Themen 13
S Wo ist der Fehler im Programm? Java Basics - Anfänger-Themen 10
J Finde Fehler bei kleinem Programm nicht Java Basics - Anfänger-Themen 3
J Compilier-Fehler bzw. Programm-Fehler Java Basics - Anfänger-Themen 3
R Fehler im Programm Java Basics - Anfänger-Themen 8
O Paint Programm mit Fehler Java Basics - Anfänger-Themen 2
E Programm zum Primzahlen ausgeben-Fehler Java Basics - Anfänger-Themen 12
S Fehler in abgetippten Programm Java Basics - Anfänger-Themen 3
F "n cannot be resolved" Fehler im einfachen programm - Warum? Java Basics - Anfänger-Themen 11
J Simples Programm - Fehler im Konstruktor Java Basics - Anfänger-Themen 2
K Fehler in Lotto Programm Java Basics - Anfänger-Themen 8
H Eclipse: Programm startet nicht, wie Fehler feststellen? Java Basics - Anfänger-Themen 5
A Fehler im Primzahl Programm Java Basics - Anfänger-Themen 17
B Java programm mit Arrays. finde den Fehler nicht Java Basics - Anfänger-Themen 3
C ?Fehler im Programm? Java Basics - Anfänger-Themen 5
F Threads + Programm:TheGreatThreadRace (Fehler) Java Basics - Anfänger-Themen 5
T Kleines Programm - Fehler bei Ausgabe. Java Basics - Anfänger-Themen 5
G Suche Fehler bei Programm Java Basics - Anfänger-Themen 2
M Handy Programm, kompletter Quelltext.Methodische Fehler? Java Basics - Anfänger-Themen 3
D Programm läuft - trotzdem noch ein Fehler drin. Java Basics - Anfänger-Themen 21
C client/server programm fehler ! Java Basics - Anfänger-Themen 20
A wo liegt der fehler im programm? Java Basics - Anfänger-Themen 9
L Fehler in einem Programm Java Basics - Anfänger-Themen 2
A "Hello World"-Programm läuft nicht Java Basics - Anfänger-Themen 16
J Delay erzeugen, ohne Programm zu blockieren Java Basics - Anfänger-Themen 7
Ü Dead Code im Programm? Java Basics - Anfänger-Themen 13
M Java Mail Programm Java Basics - Anfänger-Themen 4
E Java Programm zur anzeige, ob Winter- oder Sommerzeit herrscht Java Basics - Anfänger-Themen 62
M Mini Jar-Programm Java Basics - Anfänger-Themen 51
G JTable Listselectionlistener friert das Programm ein Java Basics - Anfänger-Themen 8
M Das Programm stellt nichts dar Java Basics - Anfänger-Themen 2
K Programm compilierbar aber nicht ausführbar... Java Basics - Anfänger-Themen 21
Z Programm Ideen Java Basics - Anfänger-Themen 8
P Wie kann ich in meinem Java Programm etwas dauerhaft speichern? Java Basics - Anfänger-Themen 5
P Wie kann ich beispielsweise Speicherstände eines Spiels DAUERHAFT in meinem Programm speichern? Java Basics - Anfänger-Themen 3
H Java-Programm zur Ausgabe von Zuständen Java Basics - Anfänger-Themen 80
G Kann Java-Programm nicht als jar aufrufen, auch als EXE nicht Java Basics - Anfänger-Themen 19
benny1993 Java Programm erstellen für ein Fußball-Turnier Java Basics - Anfänger-Themen 3
T Programm stürzt ab Java Basics - Anfänger-Themen 40
KeinJavaFreak Erste Schritte Programm "Java(TM) Platform SE binary " nicht vorhanden Java Basics - Anfänger-Themen 1
G Programm läuft durch, ohne Eingabe aus dem Chat abzuwarten Java Basics - Anfänger-Themen 4
N Programm Funktioniert mit .txt Datei aber nicht mit .rtf Datei Java Basics - Anfänger-Themen 2
D Java Programm mit Batch-Datei starten Java Basics - Anfänger-Themen 32
Jul1n4tor Programm mit Scanner und If-Statements Java Basics - Anfänger-Themen 2
D Wie sehe ich ein Java-Programm? Java Basics - Anfänger-Themen 27
K Ist das Programm schlecht bzw. schlampig programmiert ? Java Basics - Anfänger-Themen 9
Zrebna Kann Java Programm nicht in Konsole ausführen Java Basics - Anfänger-Themen 1
K Warum läuft das Programm nicht(bzw. nicht richtig) Java Basics - Anfänger-Themen 4
M Von Eclipse zum richtigen Programm Java Basics - Anfänger-Themen 1
nbergmann IntelliJ: Wie lade ich ein fertiges Programm aus dem Lehrbuch? Java Basics - Anfänger-Themen 26
D Anfängerfrage zu meinem Programm. Java Basics - Anfänger-Themen 15
nbergmann Eclipse: Lehrbuch-Programm startet nicht Java Basics - Anfänger-Themen 22
I Jetty starten von Programm (Main) Java Basics - Anfänger-Themen 27
Kydo Programm Beschreibung Java Basics - Anfänger-Themen 3
nbergmann Eclipse: Lehrbuch-Programm startet nicht Java Basics - Anfänger-Themen 7
T Java FXML selbes Fenster verschiedene Stellen im Programm Java Basics - Anfänger-Themen 5
frager2345 Programm erstellen ohne Autoboxing und Unboxing Java Basics - Anfänger-Themen 13
D JAVA Programm schreiben Java Basics - Anfänger-Themen 46
P exportiertes Programm funktioniert nur teilweise Java Basics - Anfänger-Themen 7
J Mein Programm läuft bei der ersten Eingabe nicht mehr weiter, woran liegt das? Java Basics - Anfänger-Themen 6
M Wo hält das Programm an? Java Basics - Anfänger-Themen 11
J Mein Java Programm lässt sich nicht mehr bearbeiten Java Basics - Anfänger-Themen 2
Fugover Programm funktioniert nicht Java Basics - Anfänger-Themen 11
Fugover Kopfrechnen-Programm Java Basics - Anfänger-Themen 6
NadimArazi Wie kann ich eine collision detection für die Paddles in meinem Pong Programm hinzufügen? Java Basics - Anfänger-Themen 4
sserio Wieso funktioniert mein Programm nicht Java Basics - Anfänger-Themen 2
sserio Größtes Palindrom-Produkt Programm funktioniert nur halb Java Basics - Anfänger-Themen 23
J selbst erstellte Datei mit Programm öffnen Java Basics - Anfänger-Themen 10
F nach Methode Programm nicht beenden Java Basics - Anfänger-Themen 9
A wie kann ich es in meinem Programm rein tun Java Basics - Anfänger-Themen 8
F Kann mir jemand kurz dieses Programm erklären? Java Basics - Anfänger-Themen 22
I Programm erkennt nicht an das Array zurückgegeben wird trotz Initialisierung *einfach* Java Basics - Anfänger-Themen 9
J Nach dem Exportieren funktioniert mein Programm nicht mehr Java Basics - Anfänger-Themen 8
P Mein Programm wird zwar erfolgreich Compiliert, öffnet sich aber nicht Java Basics - Anfänger-Themen 6
J Kann ich mein Programm so schreiben? Java Basics - Anfänger-Themen 4
A Lotto Programm Java Basics - Anfänger-Themen 3
S Programm erstellen Java Basics - Anfänger-Themen 3
A Verarbeiten einer Excel Datei durch das java-Programm Java Basics - Anfänger-Themen 3
S MinMax Programm erstellen Java Basics - Anfänger-Themen 4
J Interpreter-Fehler Programm gibt nicht gewünschtes Ergebnis aus Java Basics - Anfänger-Themen 11
brypa Programm mit Eingabe Java Basics - Anfänger-Themen 129

Ähnliche Java Themen

Neue Themen


Oben