Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Hallo,
Kann mir hier jemand meinen Fehler sagen?
Ich komm echt nicht drauf:
Java:
public class Zahlenfeld {
int[] zahlen;
public Zahlenfeld(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:
Zahlenfeld Tom = new Zahlenfeld ("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:
public class Zahlenfeld {
int[] zahlen;
public Zahlenfeld(String abc) {
String[] zahlen2 = abc.split(",");
int[] zahlen = new int [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);
}
public int MaxWert() {
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;
}
public int MinWert() {
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;
}
public boolean GleicheWerte() {
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!");
return false;
}
}
System.out.println("Alle Werte sind gleich!");
return true;
}
public int Uebersteiger(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;
}
public String MaxStellen() {
String stellen = "";
int MaxiWert = this.MaxWert();
for (int u = 0; u < zahlen.length - 1; u++) {
if (zahlen[u] == MaxiWert) {
stellen = "" + u + ", ";
}
}
System.out.println(stellen);
return stellen;
}
public void Wertebereich() {
System.out.println("Der Wertebereich geht von " + this.MinWert()
+ " bis " + this.MaxWert());
}
public static void main(String[] args) {
Zahlenfeld Tom = new Zahlenfeld("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?