Java Anweisungen

Diskutiere Java Anweisungen im Java Basics - Anfänger-Themen Bereich.
M

Moritz1234

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;
    }



}
 
stg

stg

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.
 
Kirby_Sike

Kirby_Sike

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;
    }
}
 
M

Moritz1234

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!!
 
Thema: 

Java Anweisungen

Passende Stellenanzeigen aus deiner Region:
Anzeige

Neue Themen

Anzeige

Anzeige
Oben