Hallo byte-welt,
also ich habe folgendes Problem: Ich muss als Aufgabe ein Programm schreiben welches verschiedene Rechenaufgaben (es geht hauptsächlich um Brüche) ausführt, diese müssen selbst als Methoden geschrieben sein.
Hier mal ein Beispiel der Aufgaben:
-mul
Das zurückgelieferte Ergebnis soll eine neue gekürzte Instanz von Bruchzahl sein, deren Zähler und Nenner den Produkten der Zähler bzw. Nenner der Parameter entsprechen.
Das Problem ist, dass bei der Ausgabe immer nur das zuletzt erstellte Objekt (hier „neu1“) beim Rechnen beachtet wird. Bei der Multiplikation (mul(neu, neu1); ) wird z.B nur das letzte Objekt mit sich selbst Multipliziert.
Hier einmal mein Hauptcode, relevant sind nur die Methoden im markierten Bereich (mit -------------- vom Rest getrennt).
{
static int a, b;
static int x;
static int y;
static int ergebnis;
public static int ggt(int a, int b)
{
if (a==0)
{
ergebnis = b;
}
if (b==0)
{
ergebnis = a;
}
x = Math.abs(a);
y = Math.abs(b);
while(x != y)
{
if (x > y)
{
x -= y;
ergebnis = x;
}
else
{
y -= x;
ergebnis = y;
}
}
return ergebnis;
}
static void einlesen(Bruchzahl zaehlerundNenner)
{
zaehler = IOTools.readInteger("Bitte geben Sie einen Zaehler ein:
");
nenner = IOTools.readInteger("Bitte geben Sie einen Nenner ein (nicht 0):
");
}
static void ausgeben(Bruchzahl ausgabe)
{
System.out.println("Der eingegebene Bruch ist: " + ausgabe.zaehler + " / " + ausgabe.nenner);
}
public static double wert(Bruchzahl ausrechnen)
{
double bruch = ((double)zaehler / (double)nenner);
return bruch;
}
static int kehrwert(Bruchzahl neuerKehrwert) //Test
{
int kehrwertErgebnis = zaehler + nenner;
return kehrwertErgebnis;
}
static int neg(Bruchzahl negiert) //Falsch
{
zaehler = -(zaehler);
nenner = -(nenner);
return zaehler;
}
static void kuerzen(Bruchzahl zuKuerzen)
{
ggt(zaehler, nenner);
zaehler = (zaehler / ergebnis);
nenner = (nenner / ergebnis);
if(zaehler < 0)
if(nenner < 0)
{
zaehler = (zaehler * (-1));
nenner = (nenner * (-1));
}
System.out.println("Es wird versucht den Bruch zu kuerzen...");
}
//------------------------------------------------------------------------------------------------------------------------------------------
static void mul(Bruchzahl a, Bruchzahl b) //Falsch, rechnet nur mit den Zahlen von "b"
{
zaehler = (a.zaehler * b.zaehler);
nenner = (a.nenner * b.nenner);
System.out.println("(" + a.zaehler + "/" + a.nenner + ") * (" + b.zaehler + "/" + b.nenner + ")" + " = " + zaehler + "/" + nenner);
}
static void div(Bruchzahl a, Bruchzahl b)
{
}
static void add(Bruchzahl a, Bruchzahl b) //Falsch, rechnet nur mit den Zahlen von "b"
{
Bruchzahl x = new Bruchzahl();
x.zaehler = ((a.zaehler * b.nenner) + (b.zaehler * a.nenner));
x.nenner = (a.nenner * b.nenner);
System.out.println("(" + a.zaehler + "/" + a.nenner + ") + (" + b.zaehler + "/" + b.nenner + ")" + " = " + zaehler + "/" + nenner);
kuerzen(x);
ausgeben(x);
}
static void sub(Bruchzahl a, Bruchzahl b)
{
}
//--------------------------------------------------------------------------------------------------------------------------------------------
public static void main (String [] args)
{
Bruchzahl neu = new Bruchzahl();
einlesen(neu);
ausgeben(neu);
//kuerzen(neu);
//ausgeben(neu);
//System.out.println("Das Ergebnis der Bruchzahl ist: " + wert(neu));
Bruchzahl neu1 = new Bruchzahl();
einlesen(neu1);
ausgeben(neu1);
//kuerzen(neu1);
//ausgeben(neu1);
//System.out.println("Das Ergebnis der Bruchzahl ist: " + wert(neu1));
add(neu, neu1);
mul(neu, neu1);
}
}```
Und der Bruchzahl Code:
```public class Bruchzahl
{
public static int zaehler;
public static int nenner;
}```
Ich hoffe ich kontne das Problem erklären, am besten Programm mal ausführen und falls es nicht klar ist versuch ich es nochmal genauer zu erklären wo das Problem liegt.
Edit: Um es etwas klarer zu machen, bei der Methode mul(neu, neu1); zb haben die variablen a.zaehler, b.zaehler und zaehler stets den selben Wert.