Wertübergabe

Status
Nicht offen für weitere Antworten.

assault

Aktives Mitglied
Hi
heute hab ich das Problem das ich eine Wertübergabe nicht hinbekomme, die Aufgabe ist ...

public static Bruch addiere ( Bruch bx, Bruch by ) : Es werden zwei Bruchobjekte als Parameter
übergeben und das Resultat als neues Bruch-Objekt zrückgeliefert.

public void invers ( Bruch b ) :Der übergebene Bruch wird durch Kehrwertbildung verändert.

public double wert() : Der Dezimalwert des Bruchs wird berechnet und zurückgegeben.

Ich hatte jetzt aus der Aufgabe verstanden, dass ich das so machen soll:

Aufruf:
Code:
b3.addiere(b1, b2);
b3.invers(b3);
b3.wert();

und dann in der anderen Klasse:

Code:
    public static Bruch addiere ( Bruch b1, Bruch b2 ){
		b1.zaehler=b1.zaehler*b2.nenner+b2.zaehler*b1.nenner;
		b2.nenner=b1.nenner*b2.nenner;
		Bruch addiere = new Bruch (b1.zaehler, b2.nenner);
		return addiere;
	}

	public void invers (Bruch b){
		b.kehrWert();
	}
	
	public double wert(){
		int nenner = 0;
		int zaehler = 0;
		return nenner = nenner / zaehler;
	}

bei dem Teil


Code:
 public static Bruch addiere ( Bruch b1, Bruch b2 ){
		b1.zaehler=b1.zaehler*b2.nenner+b2.zaehler*b1.nenner;
		b2.nenner=b1.nenner*b2.nenner;
		Bruch addiere = new Bruch (b1.zaehler, b2.nenner);
		return addiere;
	}
weiß ich durchs debuggen ganz genau, dass er die Berechnung macht und zwar richtig, aber es an der wertübergabe scheitert... was mache ich falsch???


ich persönlich hätte es so gemacht, aber es entspricht nicht der Aufgabe... :(

der Aufruf
Code:
bx.hi(bx.zaehler,bx.nenner);

und der Rest:

Code:
public void hi(double zaehler, double nenner){
			double E=zaehler/ nenner;
			System.out.println("Der Wert: "+ E);
		}



EDIT: Hatte gerade nen Geistesblitz der Partläuft jetzt
Code:
b3.addiere(b1, b2);
habs folgendermassen geändert
Code:
b3 =b3.addiere(b1, b2);
 

Quaxli

Top Contributor
Da addiere als static deklariert ist, würde ich es so aufrufen:

b3 = Bruch.addiere(b1,b2);

Durch die Deklaration "static" ist die Methode ja sozusagen von einer bestimmten Instanz losgelöst und wird üblicherweise über den Klassenname aufgerufen.

Noch ein Anmerkung am Rande: Die folgenden 2 Zeilen

Code:
      ...
      Bruch addiere = new Bruch (b1.zaehler, b2.nenner);
      return addiere;

würde ich zusammenfassen:

Code:
  ...
  return new Bruch(b1.zaehler, b2.nenner);
 

Quaxli

Top Contributor
Noch ein Anmerkung zu Punkt 2:

public void invers ( Bruch b ) :Der übergebene Bruch wird durch Kehrwertbildung verändert.

Code:
   public void invers (Bruch b){
      b.kehrWert();
   }


Hier passen meiner Ansicht nach Aufgabe und Methode nicht ganz zusammen. Du hast die Methode als void deklariert, es soll aber ein übergebener Bruch invertiert werden. Daher müßte meiner Ansicht nach ein Bruch zurück gegeben werden. Bzw. wenn die Methode für eine Instanz der Klasse Bruch als void aufgerufen werden soll, dann müßte man keinen Wert übergeben, da man ja Objekt für das die Methode aufgerufen wird, invertiert.
Hast Du das so vorgegeben bekommen?
 

assault

Aktives Mitglied
jo, es ist halt so von der aufgabe vorgegeben , wärs nicht so hätte ichs ja auch anders gemacht ... generel finde ich die aufgaben von den vorgegeben lösungsansätzten ziemlich umständlich
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Oben