Java Anweisungen

Moritz1234

Mitglied
Kann mir jemand sagen wieso ich eine Null Pointer Exception in meiner Methode max(Integer zahlen ... ) bekomme ? Ich kann meine erste max Methode nicht aufrufen ohne m mit null zu initialisieren. Kann mir jemand sagen wo mein Fehler liegt? Die beiden Methoden sollen mir den max value zurück liefern. Die erste nimmt zwei Parameter entgegen und die zweite beliebige. Die zweiter bereitet mir Probleme.
Danke schon mal!
Java:
public class Test {

    public static void main(String[] args) {
        System.out.println(max(24, 3, 50));

   
    }

    private static Integer max(final Integer n, final Integer m) {


        if (n > m) {
            return n;
        } else {
            return m;
        }
    }

    public static Integer max(final Integer ... zahlen){

        Integer m = null;

        if(zahlen.length == 0){
            m= null;

        } else if (zahlen.length == 1){
            return m = zahlen[0];

        } else {
            for(Integer n = 0; n < zahlen.length; n++){
                m = max(m,n);
            }
        }
        return m;
    }



}
 
In der Zeile
m = max(m,n);
ist m gleich null.
Beim Aufruf max(null,0) fliegt dann beim Vergleich
if (null > 0)
die NullPointerException.
 
so würde deine Methode funktionieren:

Java:
public class Test {

    public static void main(String[] args) {
        System.out.println(max(24, 3, 50));
    }

    private static Integer max(final Integer n, final Integer m) {
        return n > m ? n : m;
    }

    public static Integer max(final Integer ... zahlen){
        if(zahlen.length == 0){
            return null;
        } else if (zahlen.length == 1){
            return zahlen[0];
        }
        Integer m = zahlen[0];
        for(Integer n = 0; n < zahlen.length; n++){
             m = max(zahlen[n],m);
        }
        return m;
    }
}
 
so würde deine Methode funktionieren:

Java:
public class Test {

    public static void main(String[] args) {
        System.out.println(max(24, 3, 50));
    }

    private static Integer max(final Integer n, final Integer m) {
        return n > m ? n : m;
    }

    public static Integer max(final Integer ... zahlen){
        if(zahlen.length == 0){
            return null;
        } else if (zahlen.length == 1){
            return zahlen[0];
        }
        Integer m = zahlen[0];
        for(Integer n = 0; n < zahlen.length; n++){
             m = max(zahlen[n],m);
        }
        return m;
    }
}
Vielen dank!!
 

Zurück
Oben