Operatoren 2D Int Array auf Null-Referenzen prüfen

Kasashii

Mitglied
Hallo,

wie kann man ein 2-Dimensionales Int Array auf Null-Referenzen prüfen?
Eigentlich sollte dies ja unnötig sein, da der Compiler es nicht durchlaufen lässt, wenn das Array nicht initialisiert sein sollte, bzw. ist das Array mit 0 gefüllt. Jedoch steht in der Aufgabenstellung, dass ich das 2D-Array auf null-Referenzen prüfen und falls es auftritt eine Leerzeile eingefügt werden soll.

Zur Erklärung: Es wird aus einer anderen Methode ein zufällig generiertes Array übergeben und es soll hier ausgegeben werden und auf diese null-Referenz geprüft werden.
Bitte beachtet nicht die Variablennamen. Diese werden noch geändert.

Java:
public static void printMatrix(int[][] m) //unvollständig
    {
        int[][] test = new int[m.length][m[0].length];
          
        test = m;
              
        for(int i = 0; i < test.length; i++)
        {
            for(int j = 0; j < test[i].length; j++)
            {
                              
                    System.out.print(test[i][j] + " ");
            }
            System.out.println("");
}
        }

Ich hatte schon versucht es mit einer if-Abfrage zu testen, ob irgendein Wert des Arrays null ist, aber dies ist leider nicht möglich.
Java:
for(int i = 0; i < test.length; i++)
        {
            for(int j = 0; j < test[i].length; j++)
            {
                if(test[i][j] == null)
                {
                    System.out.println("");
                }
                else
                {
                    System.out.print(test[i][j] + " ");
                }
            }
            System.out.println("");

        }

Danke für die Hilfe
 
Es können nur die Arrays null sein, nicht deren Inhalte.

Du müsstest also test und test[0]-test[test.length-1] prüfen.
Der Compiler stellt da nichts sicher
 
Nein, da 2-dimensional eben auch null-Referenzen
Wie muss ich das verstehen?
Wenn ich ein Array anlege mit
Java:
int [][] a = new int[3][5]
und dem Array dann Werte übergebe, bspw. so
Java:
for(int i = 0; i < m; i++)
            {
                for(int j = 0; j < n; j++)
                {
                    a[i][j] = (int) (Math.random()*10 +1);
                }
            }
wie kann dann dort ein null, wert entstehen?
Sry bin noch Anfänger was Java angeht.
 
Wenn du das Array so anlegst nicht, aber du legst es in diesem Fall nicht selbst an, sondern bekommst es übergeben.
Du kannst das auch als new int[3][] anlegenen, dann hast du ein Array voller null
 
OK, ich habe das jetzt mal so implementiert

Java:
        for(int i = 0; i < test.length; i++)
        {
            if(test == null || test[i] == null)
            {
                System.out.println("");
              
            }
            else
            {
                for(int j = 0; j < test[i].length; j++)
                {
                    System.out.print(test[i][j] + " ");
                }
                System.out.println("");
            }          
        }

Leider funktioniert es nicht wie es funktionieren soll. So wie ich es verstehe wird geprüft ob das Array "test" an sich und ob das Array "test" jeweils null ist und dies wird geprüft bis "test[test.length-1]".
Korrekt?
 
Doch, das Codestück funktioniert.
Wenn da ein Fehler ist, dann nicht in dem gezeigtem Code.

So wie ich es verstehe wird geprüft ob das Array "test" an sich und ob das Array "test" jeweils null ist und dies wird geprüft bis "test[test.length-1]".
Korrekt?
Ja, prüfen, ob test!=null ist, solltest du vor der Schleife machen.
 
Das Problem ist halt, dass ich den Code auf ein Überprüfungstool hochladen muss und dieses Tool den Code mit einem vorgegebenen Code vergleicht oder so. Dann werde ich wohl mal den Betreiber des Tools fragen müssen.
Aber vielen Dank für die Hilfe
 
Inwiefern ist das ein "Problem", und was für Auskünfte erhoffst du dir vom "Betreiber des Tools"?
Mögliche Null-Referenzen sind:
a) das Array m als solches. Dies musst du ganz am Anfang der Methode überprüfen. Wenn m null ist, fliegt bereits beim Aufrug von m.length eine NullPointerException.
b) eines der int[]-Arrays in m ist null. Dies musst du zu Beginn der äußeren for-Schleife überprüfen.
 
Ich vermute mal du hast eine ganz konkrete Aufgabenstellung und das "Tool" prüft bei der Abgabe deiner Lösung die Erfüllung der Aufgabe und die ist halt noch nicht so wie erwartet, egal ob jetzt das Codefragment das du zuletzt gepostet hast richtig oder falsch ist.
 
Ich vermute mal du hast eine ganz konkrete Aufgabenstellung und das "Tool" prüft bei der Abgabe deiner Lösung die Erfüllung der Aufgabe und die ist halt noch nicht so wie erwartet, egal ob jetzt das Codefragment das du zuletzt gepostet hast richtig oder falsch ist.
Genau so ist es. Das Tool hatte wirklich einen kleinen Fehler. Der Betreiber hat den Fehler korrigiert und mein Code hat funktioniert.

Der Fehler der angezeigt wurde war lediglich: Parameter nicht auf 'null' geprueft

Danke für die Hilfe
 
Du musst die Test suite verstehen! Soll bei null/ Fehler etwas ausgegeben werden - oder soll false/ true zurückgegeben werden? Das sollte in der Aufgabenstellung stehen.
Es ist gängige Praxis, mit manchen Methoden/ Programmen einige Tests zu unterziehen.
Und wenn du gar nicht weiterkommst, kann ich Pseudocode aufschreiben, aber wenn man "die Theorie von" Arrays verinnerlicht hat, dann ist das kein Problem. Problematischer wirds in der Realisierung in anderen Programmiersprachen, C, C++ zum Beispiel. Vieles schaute man sich ab und wurde dann verbessert.
 
In der Aufgabenstellung stand drin, dass ich das Array aus einer anderen Methode in diese Methode übergebe und dann den übergebenen Wert auf null prüfe. Falls es null ist, soll eine Leerzeile ausgegeben werden.
Es funktioniert jetzt zum Glück alles 🙂
 

Neue Themen


Zurück
Oben