JavaJuengling
Grünschnabel
Hallo, ich habe ein Javaprogramm erstellt, welches überwacht, ob die Anteile den Wert des Ganzen überschreiten. Eclipse zeigt mir keine Fehler an, doch wenn ich das ganze Starten will kommt in der Konsole die Meldung: "Exception in thread "main" java.lang.NullPointerException"
Würde mich über eure Hilfe sehr freuen.
PHP:
public class Bruch {
int zaehler;
int nenner;
Bruch() {
zaehler = 0;
nenner = 1;
}
Bruch(int x) {
zaehler = x;
nenner = 1;
}
Bruch(int x, int y) {
zaehler = x;
nenner = y;
}
Bruch(Bruch a) {
this.zaehler = a.zaehler;
this.nenner = a.nenner;
}
int getZaehler() {
return zaehler;
}
int getNenner() {
return nenner;
}
void setZaehler(int z) {
zaehler = z;
}
void setNenner(int n) {
nenner = n;
}
void ausgeben() {
System.out.println(zaehler + "/" + nenner);
}
String bruchToString() {
return zaehler + "/" + nenner;
}
void kuerzen() {
int m, n, r;
m = Math.abs(zaehler);
n = Math.abs(nenner);
r = m % n;
while (r > 0) {
m = n;
n = r;
r = m % n;
}
zaehler /= n;
nenner /= n;
}
void gekuerztausgeben() {
kuerzen();
ausgeben();
}
boolean equals(Bruch x) {
Bruch a = new Bruch(this.zaehler, this.nenner);
Bruch b = new Bruch(x.zaehler, x.nenner);
a.kuerzen();
b.kuerzen();
if ((a.zaehler == b.zaehler) && (a.nenner == b.nenner)) {
return true;
} else {
return false;
}
}
Bruch addiere(Bruch b) {
Bruch x = new Bruch(this.zaehler, this.nenner);
Bruch y = new Bruch(b.zaehler, b.nenner);
x.kuerzen();
y.kuerzen();
Bruch c = new Bruch(x.zaehler + y.zaehler, x.nenner);
return c;
}
Bruch subtrahiere(Bruch b) {
Bruch x = new Bruch(this.zaehler, this.nenner);
Bruch y = new Bruch(b.zaehler, b.nenner);
x.kuerzen();
y.kuerzen();
Bruch c = new Bruch(this.zaehler - y.zaehler, x.nenner);
return c;
}
double dezimalwert() {
double a = this.zaehler;
double b = this.nenner;
return (a / b);
}
}
public class Anteil extends Bruch {
static Bruch verteilt;
Anteil() {
zaehler = 0;
nenner = 1;
Bruch b = new Bruch(zaehler, nenner);
verteilt.addiere(b);
if (verteilt.dezimalwert() > 1) {
System.out.println("Der Anteil ist zu groß!");
}
}
Anteil(int z, int n) {
zaehler = z;
nenner = n;
Bruch b = new Bruch(z, n);
verteilt.addiere(b);
if (verteilt.dezimalwert() > 1) {
System.out.println("Der Anteil ist zu groß!");
}
}
double getVerteilt() {
return (this.zaehler / this.nenner);
}
Bruch getRest() {
Bruch a = new Bruch(1, 1);
Bruch b = new Bruch(a.subtrahiere(verteilt));
return b;
}
}
public class Anteiltest {
public static void main(String[] args) {
int vermoegen = 200000;
Anteil a1 = new Anteil(1, 4);
Anteil a2 = new Anteil(1, 2);
System.out.println("Anteil von a1: " + a1.bruchToString());
System.out.println("Betrag von a1: " + vermoegen * a1.dezimalwert());
System.out.println("Anteil von a2: " + a2.bruchToString());
System.out.println("Betrag von a2: " + vermoegen * a2.dezimalwert());
System.out.println("Verteilt: " + a1.verteilt.bruchToString());
System.out.println("Rest: " + a1.getRest().bruchToString());
System.out.println("Restbetrag: " + vermoegen * a1.getRest().dezimalwert());
}
}
Würde mich über eure Hilfe sehr freuen.