Alle Kombinationen aus zwei Arrays

Thomas21

Mitglied
Hallo,
Ich bräuchte mal wieder eure Hilfe :(
Wir müssen mithilfe einer vorgegebenen Methode Helligkeitswerte für verschiedene Farben eines Fotos ermitteln.
Dazu müssen wir jeden einzelnen Pixel durch so einen Befehl laufen lassen:
int rot = pixel.Anteilrot (10,20);
Die beiden Zahlen in den Klammern sind also Koordinaten des Bildes.

Ebenfalls können wir mit dieser Methode die Anzahl der Pixel in Breite und Höhe auslesen.

An diesem Punkt komme ich nicht weiter.

Ich muss irgendwie alle Kombinationen aus den Pixeln in der Höhe und den Pixeln in der Breite berechen.
Meine Überlegung ist, eine if-Abfrage für die Breite laufen zu lassen und den Wert für die Höhe jedesmal um 1 zu erhöhen wenn die gesamte Breite durchlaufen wurde.
Ich hoffe das ist einigermaßen verständlich erklärt:D
jedoch bekomme ich hier "java.lang.ArrayIndexOutOfBoundsException" wenn die Pixel für die Breite durchgelaufen sind. (nehme ich an)
Ich habe die Höhe und die Breite jeweils in ein Array gepackt in der Hoffnung damit besser rechnen zu können.

Java:
    for(int q=0, p=0, r=0; r<Abreite.length; r++)
            {
                IO.println(r);
                if ( r>=Abreite.length && p<=Ahoehe.length)
                {
                    int rot = pixel.Anteilrot (Abreite[r],Ahoehe[p]);      
                    IO.println(rot);
                    IO.println(p);
                    p++;
                }
              
            }
Hat vielleicht jemand eine Idee?
 

JCODA

Top Contributor
if-Schleifen gibt es nicht. If-Abfragen und For-Schleifen gibt es aber ;)

Benutze zwei verschachtelte For-Schleife, eine für Breite, eine für Höhe.
 

Thomas21

Mitglied
Ich habe eine for-Schleifen-Konstruktion gebastelt, allerdings bekomme ich am Ende zu kleine Werte heraus.
Java:
int y=0;
                       
                        for(int r=0; r<breite;r++)
                        {
                            for(int p=0; p<hoehe; p++)
                            {
                                int rot = pixel.Anteilrot (r,p);
                                int gruen = pixel.Anteigruenl (r,p);
                                int blau = pixel.Anteilblau (r,p);
                                HWerter[y] = rot;
                                HWerteg[y] = gruen;
                                HWerteb[y] = blau;
                                y++;
                            }
                           
                        }
ich wollte jeweils für jede Farbe ein Array befüllen. Allerdings bin ich mir nicht sicher welche Variable ich zum "durchlaufen" der Arrays benutzen soll.
Die Variable p wird doch bei jedem Durchlauf wieder auf 0 gesetzt oder?o_O
 

JCODA

Top Contributor
Bisher sieht dein Code ganz gut aus, möglicherweiße bietet sich r+p*breite oder r*hoehe+p an. Kommt drauf an, in welcher Reihenfolge, du die werte Abspeichern möchtest.
Was meinst du damit, dass du zu kleine Werte bekommst?
 

Thomas21

Mitglied
Das Ergebnis was zum Schluss rauskommen soll ist vorgegeben.
Die Schleifen sind nur ein Teil der Aufgabe. Ich glaube aber das hier der Fehler liegt.


Ich verstehe gerade nich was ich mit "r+p*breite" oder "r*hoehe+p" machen kann. Die Reihenfolge in der die Werte in die jeweiligen Arrays gespeichert werden ist egal.
 

JCODA

Top Contributor
Oh ja, ich hab nicht gesagt, dass ich meinte, dass sich diese Werte als Index eigenen. Ich meinte es etwa so:
Java:
                        for(int r=0; r<breite;r++){
                            for(int p=0; p<hoehe; p++){                              
                                HWerter[r*hoehe+p] = pixel.Anteilrot (r,p);
                                HWerteg[r*hoehe+p] = pixel.Anteilgruen (r,p);
                                HWerteb[r*hoehe+p] = pixel.Anteilblau (r,p);                                
                            }                          
                        }
Ansonsten kann ich dir leider nicht weiterhelfen, ich denke das ist letztlich äquivalent zu dem, was du bereits hast.
Du kannst ja mal mehr von der Aufgabe preisgeben, und genau sagen, was du erwartest und welcher Wert tatsächlich raus kommt.
 

Thomas21

Mitglied
Die Ergebnisse sind ungefähr halb so groß wie sie sein müssten.
Rot: 90; Grün: 106 und Blau: 130

und diese Werte bekomme ich raus:
Rot: 35; Grün: 47; Blau: 68
Das ist der ganze Code
Java:
public class Main {
    public static void main(String[] args) {
        try {
            String pixelDateiName = "Foto.jpg";
            Pixel pixel = new Pixel (pixelDateiName);
            int hoehe = pixel.hoehe();
            int breite = pixel.breite();
            int PixelGes = hoehe * breite;
            System.out.println("Pixelzahl insgesamt " + PixelGes);
            System.out.println(breite);
            System.out.println(hoehe);
          
          
          

          
          
            /*Arrays testen
            for(int z = 0; z<Abreite.length; z++) {
            System.out.println(Abreite[z]);
             }*/
      
                  
                      
                        int[] HWerter = new int[PixelGes];
                        int[] HWerteg = new int[PixelGes];
                        int[] HWerteb = new int[PixelGes];
                  
                      
              
                        for(int r=0; r<breite;r++){
                            for(int p=0; p<hoehe; p++){                           
                                HWerter[r+p*breite] = pixel.Anteilrot (r,p);
                                HWerteg[r+p*breite] = pixel.Anteilgruen (r,p);
                                HWerteb[r+p*breite] = pixel.Anteilblau (r,p);
                              
                            }         
                          
                        } 
      
    //Addierte Werte ausgeben und durch gesamte pixel teilen
                      
    Addieren (HWerter);
    System.out.println(Addieren (HWerter));
    int Drot = Addieren (HWerter)/PixelGes;
  
  
    Addieren (HWerteg);
    int Dgruen = Addieren (HWerteg)/PixelGes;
  
    Addieren (HWerteb);
    int Dblau = Addieren (HWerteb)/PixelGes; 
          
   System.out.println("Durchschnittliche Helligkeit--> " + "Rot: " + Drot + ", " + "Grün: " + Dgruen + ", " + "Blau: " + Dblau);       
  
        }
        catch (IOException e) {
            System.out.println("Fehler beim Einlesen der Datei!");
            e.printStackTrace();
        }

      
    }

    private static int Addieren(int[] hWerte) {
      

    //Helligkeitswerte addieren
        int AktuelleZahl =0;
        int k=0;
        int i=0;
        int[] MaxWert = new int[999999];
        while (k < 999999)
        {
            AktuelleZahl= AktuelleZahl + hWerte[i];
            MaxWert[i]= AktuelleZahl;
            i++;
            k++;
        }
      
        int max = 0; //größte Zahl
        for(int t = 0; t < MaxWert.length; t++) {
           if(MaxWert[t] > max) {
              max = MaxWert[t];
           }
        }
      
  
        //Aktuelle Zahl (Addierte Helligkeitswerte) als Rückgabewert wieder ausgeben
        return max;
}

  
    }
 

JCODA

Top Contributor
uhh, deine Addieren-methode ist sehr umständlich.
Wie wäre es mit einer einzigen For-Schleife, die die Summe berechnet?
Ohne maximum und so?
und du rufst diese Addieren methode jeweils einmal zu oft auf. (Ist unnötig und bringt nichts.)
Ansonsten kannst du dir ja mal die einzelnen Farb-Arrays ausgeben lassen, und schauen, ob da tatsächlich das drinsteht, was du erwartest.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
_user_q Alle Kombinationen von "0000" bis "FFFF" kompakt schrieben Allgemeine Java-Themen 13
MaxG. Best Practice Alle Kombinationen berechnen Allgemeine Java-Themen 3
F Java Spintax: Alle Kombinationen Erzeugen Allgemeine Java-Themen 2
P Methoden Alle Kombinationen aus 2 Karten berechnen Allgemeine Java-Themen 2
S Alle Kombinationen aus ArrayList - Potenzmenge Allgemeine Java-Themen 7
Spot84 alle kombinationen einer string arraylist Allgemeine Java-Themen 2
G Alle Möglichen Kombinationen einer Liste Allgemeine Java-Themen 11
M Alle möglichen Kombinationen von mehreren Objekten berechnen Allgemeine Java-Themen 6
Zrebna Wie ermittelt man alle testbaren (zu testenden) Klassen in seinem Maven-Projekt? Allgemeine Java-Themen 23
_user_q JavaFX Robot alle Unicode-Zeichen schreiben lassen können Allgemeine Java-Themen 12
S Bookmark HTML Datei einlesen, alle Links erhalten und manche editieren..? (aktuell JSoup) Allgemeine Java-Themen 4
Sachinbhatt Sind alle Methoden in Java implizit virtuell Allgemeine Java-Themen 2
Kingamadeus2000 Alle mehrfach vorkommenden Buchstaben rekursiv aus einem String entfernen. Allgemeine Java-Themen 6
Drachenbauer wie kann ich alle instanzen einer Klasse durchsehen, ohne, dass diese in einer Liste erzeugt wurden? Allgemeine Java-Themen 11
8u3631984 Generelle Log4j.xml für alle Module Allgemeine Java-Themen 5
L Farbverlauf RGB alle Farben Allgemeine Java-Themen 28
W Server-Thread schreibt nicht alle Dateien Allgemeine Java-Themen 6
S Alle Dateinamen ermitteln Allgemeine Java-Themen 22
F Wie bekommt man alle Filenamen eines Webserver Verzeichnisses Allgemeine Java-Themen 6
S Kann ich eine Methode schreiben die alle Arten von funktionalen Interfaces akzeptiert..? Allgemeine Java-Themen 21
L Operatoren Java Reflections: Alle Methoden einer Klasse aufrufen ohne Exceptions Allgemeine Java-Themen 5
J Best Practice Objekt an alle Klassen verteilen ( Discord Bot ) Allgemeine Java-Themen 7
C BufferedReader/BufferedWriter schreibt nicht alle Bytes Allgemeine Java-Themen 2
J Alle Unit Tests in Maven Modul Projekt ausführen Allgemeine Java-Themen 7
S Anwendung die alle Abhaengigkeiten einer Library listet..? Allgemeine Java-Themen 5
K Nicht alle class-Dateien im JRE? Allgemeine Java-Themen 2
I Alle logs von Logger bekommen Allgemeine Java-Themen 3
U javax.mail.Folder.list() zeigt nicht alle Ordner Allgemeine Java-Themen 5
K Classpath Alle Classen aus einem Package lesen Allgemeine Java-Themen 7
L Alle möglichen Additionen (Rekursiv) Allgemeine Java-Themen 3
KaffeeFan Methoden replace alle Buchstaben Allgemeine Java-Themen 3
S Alle Methodenaufrufe eines Threads notieren..? Allgemeine Java-Themen 7
U Koordinaten alle Pixel eines Dreiecks zeichnen ausgeben Allgemeine Java-Themen 5
Z Eclipse hängt sich alle paar Sekunden auf (Keine Rückmeldung). Allgemeine Java-Themen 4
Seikuassi Alle Escape-Sequenzen in einem String ersetzen Allgemeine Java-Themen 4
Sogomn Klassen Alle in eine Klasse Allgemeine Java-Themen 11
B Threads Barrier mit wait()/notify() aber nicht alle Prozesse terminieren Allgemeine Java-Themen 2
S .jar hat nicht alle Klassen ??? Allgemeine Java-Themen 10
T Wie kann ich alle existierenden Java-Klassen anzeigen lassen? Allgemeine Java-Themen 10
M Zufälligen String generieren und alle 5 Minuten ändern Allgemeine Java-Themen 2
M RegEx alle Matches ausgeben Allgemeine Java-Themen 5
A Applet Alle Threads beim schließen des Applets beenden Allgemeine Java-Themen 8
C SwingWorker.cancle(true) tötet alle Worker Allgemeine Java-Themen 3
B Methoden Alle Methoden und Variablen aus Java-Dateien auslesen. Allgemeine Java-Themen 7
T Alle Instancen einer Klasse auflisten Allgemeine Java-Themen 13
S Programm das alle aufgerufenen Methoden ausgibt..? Allgemeine Java-Themen 6
D Alle Variablen final setzen ? Allgemeine Java-Themen 26
brunothg Alle Kombiationen von n Ziffern Allgemeine Java-Themen 2
M Erste Schritte alle xmlFiles in zugehörige pdfFiles einlesen Allgemeine Java-Themen 4
B Variablen Alle RenderingHints.Keys (KEY_*) in Array + alle RenderingHints.Keys (VALUE_*) in Object[] Allgemeine Java-Themen 8
D generische Klasse für alle Maps (nicht Collections :-)) Allgemeine Java-Themen 11
E Logger loggt nicht alle Level Allgemeine Java-Themen 2
S Aus einer Liste<Oberklasse> alle Elemente die eine bestimmte Unterklasse von Oberklasse haben filter Allgemeine Java-Themen 8
K String: alle X Zeichen Zeilenumbruch Allgemeine Java-Themen 3
F Alle Exceptions abfangen Allgemeine Java-Themen 4
nrg JS als ScriptEngine - alle Punkte ersetzen Allgemeine Java-Themen 4
A Bildschirmauflösung geändert - alle Bildschirminhalte verschoben - was tun? Allgemeine Java-Themen 7
C Alle Klassen eines Packages lesen und instanzieren? Allgemeine Java-Themen 9
B Alle Exceptions auf einmal abfangen Allgemeine Java-Themen 4
S Warum packt er nicht alle Dateien? Allgemeine Java-Themen 13
J Alle Tage eines Jahres Allgemeine Java-Themen 2
AlexSpritze Alle Domains oder FQDN von einem Server erfragen? Allgemeine Java-Themen 2
S Alle Elemente von zwei Listen vergleichen Allgemeine Java-Themen 10
J Konstrukt um alle Paare und Tripel einer Punkte-Menge bilden Allgemeine Java-Themen 12
B Alle möglichen Buchstabenkombinationen in einem String Allgemeine Java-Themen 7
P alle zusammanhaengenden teilgraphen Allgemeine Java-Themen 7
A alle nicht-dplikate finden Allgemeine Java-Themen 14
M Wie kann ich alle System.out Strings in ein log window umleiten? Allgemeine Java-Themen 6
E Alle unter Prozesse der beim schließen mit schließen Allgemeine Java-Themen 3
A An alle Cracks: Anwendung beenden mit ShutdownHook? Allgemeine Java-Themen 13
J Logger gibt nicht alle Level aus Allgemeine Java-Themen 3
M alle möglichen Zahlenkombinationen Allgemeine Java-Themen 5
B in welchem verzeichnis liegen alle installierten klassen? Allgemeine Java-Themen 6
hdi Für alle fleissigen Helfer! Allgemeine Java-Themen 15
N Alle Fehler ausgeben? Allgemeine Java-Themen 4
J Zweiter Prozess der alle x Sekunden etwas abfragen soll Allgemeine Java-Themen 2
O Auf alle Events reagieren Allgemeine Java-Themen 3
B J-Unit Tests. Alle Tests eines Package einsammen. Allgemeine Java-Themen 4
U alle Dateien eines Ordners innerhalb einer JAR auflisten Allgemeine Java-Themen 6
S toString() für alle Member einer Klasse. Allgemeine Java-Themen 6
G Alle möglichen Konfigurationen eines Baumes Allgemeine Java-Themen 4
C Alle Möglichen Substrings der Länge k aus String extrahieren Allgemeine Java-Themen 9
C Alle Bilder eines binären Arrays ausgeben Allgemeine Java-Themen 3
G Alle möglichen Permutationen einer Folge n Allgemeine Java-Themen 3
V Alle Klassen eines Package auflisten? Allgemeine Java-Themen 6
H JTable Löschen [Alle Zeilen aufeinmal Löschen] Allgemeine Java-Themen 6
@ RegEx: Alle Sonderzeichen ausser dem Punkt Allgemeine Java-Themen 4
H Alle möglichen Hochkommata ausschließen Allgemeine Java-Themen 6
M Gibt es ein Jar - das alle Componente Automatisch anpasst? Allgemeine Java-Themen 14
K Suche alle Objekte einer bestimmten Klasse Allgemeine Java-Themen 2
N Unter Mac Os X alle laufenden Prozesse ausgeben Allgemeine Java-Themen 3
S Änderung an Proberties datei an alle User weitergeben? Allgemeine Java-Themen 7
P Observer, nicht alle updates bearbeiten Allgemeine Java-Themen 2
der JoJo [TreeSelection] wie bekomme ich alle Elemente Allgemeine Java-Themen 4
G Alle Zeichen des Alphabets ausgeben Allgemeine Java-Themen 4
G Alle Möglichkeiten n Elemente Anzuordnen. Allgemeine Java-Themen 13
0 Alle Teiler einer Zahl performant berechnen? Allgemeine Java-Themen 9
J Funktion alle Möglichkeiten berücksichtigen Allgemeine Java-Themen 5
O Warten bis alle gestarteten Threads beendet sind? Allgemeine Java-Themen 6
G HTML file Alle relativen URL in absolute URL umschreiben? Allgemeine Java-Themen 12

Ähnliche Java Themen

Neue Themen


Oben