Werte aus 2 eindimensionale boolean arrays mithilfe von logischen operatoren berechnen

Superbyte

Mitglied
Guten Abend,

ich versuche mit zwei for-Schleifen die Werrte aus 2 eindimensionalen Arrays mit logischen Operatoren zu verbinden. Die Werte werden in einer anderen Methode aus einer Folge von nullen und einsen berechnet. Dieser Endwert soll dann wieder in ein Array abgelegt werden. Leider bekomme ich da eine ArrayIndexOutOfBoundsException. Ich steh irgendwie auf dem Schlauch und komme nicht so richtig weiter. Ich hoffe das war verständlich. Kann mir jemand sagen wo mein Denkfehler ist?!?!
Hier der Code

Java:
public class Volladdierer {

    public boolean[] barray1 = new boolean[5];
    boolean[] barray2 = new boolean[5];
    public int p, q = 0;
    public boolean temp, sum1;

    public void convertArray(DezToBin param_DezToBin) {


        for (int i = param_DezToBin.binZahl3.length - 1; i >= 0; i--) {

            if (param_DezToBin.binZahl3[i] == 1) {
                barray1[p] = true;
            } else {
                barray1[p] = false;
            }
            p++;

        }

        for (int j = param_DezToBin.binZahl4.length - 1; j >= 0; j--) {

            if (param_DezToBin.binZahl4[j] == 1) {
                barray2[q] = true;
            } else {
                barray2[q] = false;
            }
            q++;

        }

    }

    public void compute() {

        boolean sum[] = new boolean[5];
        boolean cin = false;
        int k = 0;
        Gatter g = new Gatter();

        
        for(int i = 0; i < barray1.length-4; i++){
            
            System.out.print(barray1[i]+" ");
        }
        System.out.println();
        
        for(int j = 0; j  < barray2.length-4; j++){
            
            System.out.print(barray2[j]+" ");
            
        }
        System.out.println();
        

        // hier werden die werte aus beiden arrays mit logischen operatoren
        // "berechnet"
        for (p = barray1.length - 1; p >= 0; p--) {


            for (q = barray2.length - 1; q >= 0; q--) {

                // XOR Verknuepfung       
                temp = g.setOr(g.setAnd(g.setNotX(barray1[p]), barray2[q]), g.setAnd(barray1[p], g.setNotY(barray2[q])));
                

                // Mithilfe von temp den endgueltigen Wert bestimmen
                sum1 = g.setOr(g.setAnd(g.setNotX(temp), cin), g.setAnd(temp, g.setNotY(cin)));
                
                // An dieser Stelle tritt eine ArrayIndexOutOfBoundsException auf
                sum[k] = sum1;
                k++;


            }
            System.out.println();


        }




    }
}
 
Dein Problem ist ganz einfach: Du hast eine lokale Variable, die in der GANZEN Methode bekannt ist und dort hochgezählt wird. Nun zählst du die lokale Variable barray1.length * barray2.length hoch, wodurch die Variable k natürlich irgendwann einen Wert größer 4 erreicht und eine Exception fliegt. Mach daraus lieber eine lokale Variable in der Schleife selbst!
 
Vielen vielen Dank für deine Antwort. Ich werd das jetzt mal umsetzen was du mir gesagt hast

[Edit] Das Problem wurde behoben
 
Zuletzt bearbeitet:

Neue Themen


Zurück
Oben