Hallo,
Kann mir hier jemand meinen Fehler sagen?
Ich komm echt nicht drauf:
Java:
publicclassZahlenfeld{int[] zahlen;publicZahlenfeld(String abc){String[] zahlen2 = abc.split(",");for(int u =0; u < zahlen2.length-1; u++){
zahlen[u]=Integer.parseInt(zahlen2[u]);}System.out.println("Hier mal das Array: "+ zahlen);}
und unten in der Main hab ich:
Java:
ZahlenfeldTom=newZahlenfeld("1,2,3,4,5,5");
und mir wird die Zeile: "zahlen = Integer.parseInt(zahlen2);" und die in der Main als Fehler angezeigt.
Exception in thread "main" java.lang.NullPointerException
at uebung1.Zahlenfeld.<init>(Zahlenfeld.java:10)
at uebung1.Zahlenfeld.main(Zahlenfeld.java:81)
ich schreib mal alles rein... dann seht ihr was ich meine:
Java:
publicclassZahlenfeld{int[] zahlen;publicZahlenfeld(String abc){String[] zahlen2 = abc.split(",");int[] zahlen =newint[zahlen2.length];for(int u =0; u < zahlen2.length -1; u++){
zahlen[u]=Integer.parseInt(zahlen2[u]);}System.out.println("Hier mal das Array: "+ zahlen);}publicintMaxWert(){int max = zahlen[0];for(int u =0; u < zahlen.length -1; u++){if(zahlen[u]> max){
max = zahlen[u];}}System.out.println("Maximalwert: "+ max);return max;}publicintMinWert(){int min = zahlen[0];for(int u =0; u < zahlen.length -1; u++){if(zahlen[u]< min){
min = zahlen[u];}}System.out.println("Minimalwert: "+ min);return min;}publicbooleanGleicheWerte(){int ersterWert = zahlen[0];for(int u =0; u < zahlen.length -1; u++){if(ersterWert != zahlen[u]){System.out.println("Es sind unterschiedliche Werte vorhanden!");returnfalse;}}System.out.println("Alle Werte sind gleich!");returntrue;}publicintUebersteiger(int wert){int anzahl =0;for(int u =0; u < zahlen.length -1; u++){if(zahlen[u]> wert){
anzahl++;}}System.out.println(anzahl +" Einträge übersteigen den Wert "+ wert);return anzahl;}publicStringMaxStellen(){String stellen ="";intMaxiWert=this.MaxWert();for(int u =0; u < zahlen.length -1; u++){if(zahlen[u]==MaxiWert){
stellen =""+ u +", ";}}System.out.println(stellen);return stellen;}publicvoidWertebereich(){System.out.println("Der Wertebereich geht von "+this.MinWert()+" bis "+this.MaxWert());}publicstaticvoidmain(String[] args){ZahlenfeldTom=newZahlenfeld("1,2,3,4,5,5");Tom.MinWert();Tom.MaxWert();Tom.MaxStellen();Tom.GleicheWerte();Tom.Uebersteiger(3);Tom.Wertebereich();}}
ansonsten deklarierst du eine zusätzliche lokale Variable mit gleichem Namen, die dein Attribut überlagert.
System.out.println(array); wird dir nur einen Hashcode geben, als nicht wundern, wenn "komische" sachen auf der Konsole erscheinen; es muss nicht heißen, dass dein Array das falsche beinhaltet
Methodennamen fangen mit einem kleinen Buchstaben an und sollte auch was tun z.B. minWertBerechnen anstatt nur minWert.
Alle deine for-Schleifen laufen 1 zu wenig. ;-)
achso... ok danke ...
ich hab jetzt nicht ganz verstanden wo ich das hinschreiben soll... also hab ich das "zahlen" array in String geändert und überall in den methoden ge-"parsed" ... das geht auch
gibt ne möglichkeit das array auszugeben ohne ne schleife zu bauen?