0 Daumen
47 Aufrufe

Ich habe ein Schulprojekt, wo wir ein Programm erstellen sollen, welches Brüche berechnet (gemischten Bruch, etc.) und addiert/subtrahiert/.. . Jedoch habe ich überhaupt keine Ahnung von dem Thema und bin verzweifelt, weil ich nicht weiß was ich zu tun habe. Ich weiß nicht welche Infos man noch brauch, um mir zu helfen, aber wenn ihr mir helfen könnt und was wissen müsst, fragt nach und ich beantworte es. Wir programmieren mit "BlueJ" und müssen davor unser Projekt mit "UMLet" planen. Bitte ernst gemeinte Antworten.



Code:

von

Plane erstmal dein Projekt und zeig uns dann dein UML-Klassendiagramm. Darauf aufbauend kannst du dann dein Java-Programm schreiben - vorausgesetzt, dein UML Diagramm ist korrekt. Überlege dir, was man für das Rechnen mit Brüchen alles benötigt und erstelle dann die einzelnen Klassen. So könnte eine Klasse zum Beispiel "Bruch" heißen und die Klassenattribute "int nenner" und "int zaehler" beinhalten.


Ich weiß nicht, wie ich hier mein UML Diagramm hochladen kann, einen
Screenshot davon machen geht nicht.



Das ist was ich bis jetzt zum Bruch habe, jedoch fehlt bei "private int
erweitern" noch "return", wird zumindest in BlueJ bei mir so angezeigt.


public class Bruch
{
  //Attribute
  private int zaehler;
  private int nenner;
  private int faktor;
 
  //Konstruktor
  public Bruch(int pZaehler, int pNenner)

  {
      zaehler = pZaehler;
      nenner = pNenner;
     
  }
  //Methoden für Bruchrechnung
  public int ggt(int a, int b) {

  if (a == 0)
  return b;
  while (b != 0) {
  if (a > b)
  a = a - b;
  else
  b = b - a;
  }
  return a;
  }
 
 
 
  private void kuerze()
  { 
     
      zaehler = zaehler / ggt(zaehler, nenner);
      nenner = nenner / ggt(zaehler, nenner);
      if (nenner < 0)
      zaehler = -zaehler;
      nenner = -nenner;
 
 
  }
     
 
  private int erweitern(int faktor)
  { 
      zaehler = zaehler * faktor;
      nenner = nenner * faktor;
 
 
  }
 
 
}
jedoch fehlt bei "private int erweitern" noch "return"

Und bei private void kuerze fehlt es nicht.

Vergleiche die Signaturen der beiden Funktionen. Überlege dir dann, ob du diesen Unterschied wirklich benötigst.

Außerdem: private int erweitern verwendet den Infinitiv als Funktionsname, private void kuerze verwendet dagegen den Imperativ. Das ist zwar technisch kein Problem, aber etws mehr Konsistenz bei der Benennung ist schon wünschenswert.

public int ggt(int a, int b) {

  if (a == 0)
  return b;
  while (b != 0) {
  if (a > b)
  a = a - b;
  else
  b = b - a;
  }
  return a;
  }`

Oder

public int ggt(int a, int b) {
    if (b == 0)
        return a;
    else
        return ggt(b, a%b);
}

Ein anderes Problem?

Stell deine Frage

Ähnliche Fragen

Willkommen bei der Stacklounge! Stell deine Frage einfach und kostenlos

x
Made by a lovely community