Frage von Intred, 55

Kann mir wer bei einer Java Aufgabe mit einem 2D Array helfen? Danke

Die Aufgabe ist, dass ich eine Methode schreiben soll, welche ein 2D boolean Array und einen ganzzahligen Faktor f>1 übergeben bekommt. Das Array ist quadratisch und mit true oder false Werten befüllt. Nun soll es in der Methode um den Faktor vergrößert werden und natürlich dementsprechend auch befüllt werden.

Mein Code funktioniert komischer weise nur für den Faktor 2:

public static boolean[][] magnify(boolean[][] q, int f){

    boolean bla =true ;
    int l= q.length;

    boolean[][] newQ = new boolean[l*f][l*f];

    for(int i = 0; i<l; i++){
        for(int j= 0; j<l; j++){

            if(q[i][j]==true){
                newQ[i*f][j*f] = true;
                bla=true;
            }

            else{
                newQ[i*f][j*f] = false; 
                bla = false;
            }

            for(int k=i*f; k<(i+1)*f; k++){
                for(int y=j*f; y<(j+1)*f; y++){
                    if(bla=true)
                        newQ[k][y]= true;
                    else
                        newQ[k][y] = false;
                }
            }
        }
    }


    return newQ;

}
Hilfreichste Antwort - ausgezeichnet vom Fragesteller
von Jonas711, 33

Relativ einfache Sache.

Du führst in deiner innersten for-Schleife eine if-Abfrage mit = aus.

 if(bla=true)

Ändere das in den korrekten Vergleichsoperator == zu

 if(bla==true)

und es sollte laufen.

Kommentar von Intred ,

Danke! Ist mir die ganze Zeit über nicht aufgefallen.....-.- 

Kommentar von Jonas711 ,

Kein Ding. Das ist auch wirklich so eine Sache, wo man Ewigkeiten suchen kann.

Antwort
von NeoExacun, 35

Den kompleten IF-Block kannst du ersetzen durch:

newQ[i*f][j*f] = q[i][j];

Das Problem ist deine Schleifenbedingung. Die Schleife muss nicht laufen solange k<(i+1)*f, sondern k<=l*f.

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten