Registrierung Kalender Mitgliederliste Teammitglieder Suche Häufig gestellte Fragen Zur Startseite

Informatiker Board » Themengebiete » Informatik in der Schule » Java-Projekt Bruchrechnen » Antwort erstellen » Hallo Gast [Anmelden|Registrieren]

Antwort erstellen
Benutzername: (du bist nicht eingeloggt!)
Thema:
Nachricht:

HTML ist nicht erlaubt
BBCode ist erlaubt
Smilies sind erlaubt
Bilder sind erlaubt

Smilies: 21 von 33
smileWinkDaumen hoch
verwirrtAugenzwinkerngeschockt
Mit ZungeGottunglücklich
Forum Kloppebösegroßes Grinsen
TanzentraurigProst
TeufelSpamWillkommen
LehrerLOL HammerZunge raus
Hilfe 
aktuellen Tag schließen
alle Tags schließen
fettgedruckter Textkursiver Textunterstrichener Text zentrierter Text Hyperlink einfügenE-Mail-Adresse einfügenBild einfügen Zitat einfügenListe erstellen CODE einfügenPHP CODE farbig hervorheben
Spamschutz:
Text aus Bild eingeben
Spamschutz

Die letzten 10 Beiträge
Ibn Batuta

Bei Fragen zum Code solltest du den Quellcode, wo es gerade hapert, immer auch mitposten. Sonst ist es schwer eine Ferndiagnose zu liefern, ohne zu wissen, wo es konkret scheitert. Augenzwinkern


Ibn Batuta
aal

Zitat:
Original von yoyo

ich hoffe ihr seid noch da, wenn ich weitere fragen hab smile


nö !!!
yoyo

danke für die umfangreiche hilfe smile )

es klappt zwar noch nicht so ganz, aber immerhin komm ich voran großes Grinsen
ich hoffe ihr seid noch da, wenn ich weitere fragen hab smile
Ibn Batuta

Zitat:
Original von MaBa
Wenn du etwas als private deklarierst, kannst du von einer anderen Klasse auf diese Variablen (manipulierender Absicht) nicht zugreifen.


Das meinte ich damit auch. Da es hier um Manipulation des Zählers und Nenners geht, habe ich es so erklärt.
Natürlich ist deine Erklärung umfassender.

Ibn Batuta
MaBa

Zitat:
Wenn du etwas als private deklarierst, kannst du von einer anderen Klasse auf diese Variablen (manipulierender Absicht) nicht zugreifen.


Als kurze Ergänzung: private Variablen sind überhaupt nicht für andere Klassen sichtbar, auch nicht für den lesenden (nicht manipulierenden) Zugriff.

Kurzes Beispiel zu Getter & Setter:

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
public class Bruch
{ 

  private int zaehler; 
  private int nenner;  

  public Bruch(int z, int n)
  { 
    zaehler = z; 
    nenner = n; 
  }

//...


  ///////////
  //GETTER
  ///////////

  int getZaehler()
  {
    return zaehler;
  }

  int getNenner()
  {
   return nenner; 
  }

  ///////////
  //SETTER
  ///////////

  void setZaehler(int z)
  {
   zaehler = z; 
  }

  void setNenner(int n)
  {
    if(n != 0) {
      nenner = n;
    } else {
     //...Fehlerbehandlung 
    }
  }
}



Das Prinzip hast du aber auch schon verwendet, allerdings heißen die Methoden bei dir "gibZaehler" und "gibNenner". Syntaktisch ist das völlig o.k. wird aber üblicherweise so benannt wie oben erläutert.
Das Problem liegt darin, dass die Methoden in der falschen Klasse definiert werden, da die Variablen in bruch deklariert werden und die methoden in rechnen implementiert sind.

Aber um Ordnung in deinen Code zu bringen: Welcher Code bzw. welche Struktur wurde denn vorgegeben?

Viele Grüße,
MaBa
Ibn Batuta

Zitat:
Original von yoyo
das da oben,was ich eigentlich asl zitat schreiben wollte :'D hab ich nicht so verstanden, also muss man "get und set" nochmal als als eigene methode schreiben ? und in welcher klasse wenn ja? wie würde das dann aussehen? weil ich dachte das aufrufe nur mit methoden funktionieren also a.vertikalVerschieben(5); mit vertikal Verschieben als eigene methode nicht?
aber den rest hab ich verstanden danke smile nur halt diese 4 rechenarten das klappt irgendwie nicht ._.


Immerhin hast du deine Variablen als private deklariert, dann mußt du diese Methoden auch schreiben, nämlich in der Klasse bruch (die sich übrigens groß geschrieben gehört, da Klassen immer groß geschrieben werden - ist ´ne Konvention...). Wie möchtest du sonst den Zähler und den Nenner in einer anderen Klasse manipulieren wollen?

Wenn du etwas als private deklarierst, kannst du von einer anderen Klasse auf diese Variablen (manipulierender Absicht) nicht zugreifen. Dafür mußt du dann get- und set-Methoden zurechtlegen, mit denen du mittels eines Objektes dieser Klasse darauf zugreifst.


Ibn Batuta

PS: Die Fälle für den Fall, dass der Nenner mal 0 werden könnte, sind noch gar nicht abgedeckt.
yoyo

das da oben,was ich eigentlich asl zitat schreiben wollte :'D hab ich nicht so verstanden, also muss man "get und set" nochmal als als eigene methode schreiben ? und in welcher klasse wenn ja? wie würde das dann aussehen? weil ich dachte das aufrufe nur mit methoden funktionieren also a.vertikalVerschieben(5); mit vertikal Verschieben als eigene methode nicht?
aber den rest hab ich verstanden danke smile nur halt diese 4 rechenarten das klappt irgendwie nicht ._.
yoyo

Implementiere die Operationen besser innerhalb der Klasse Bruch, denn da gehören sie auch hin:

z.B.:

public bruch addiere( bruch a)
{
int neuerZaehler = zaehler * a.getNenner()
+ nenner * a.getZaehler();
int neuerNenner = nenner * a.getNenner();

return new bruch( neuerZaehler , neuerNenner );
}

Benenne die Getter & Setter am besten auch mit get... und set...
MaBa

Hallo yoyo,

("Limit" gelesen? *gg*)

Ich fang einfach mal an:

(1) Was soll
code:
1:
String gemischteDarstellung()
machen ?

Es sollte ein String zurückgeliefert werden, was aber nicht der Fall ist. Außerdem verwendest du eine Variable die nirgendwo deklariert ist.

Evtl. ist sowas gemeint:

code:
1:
String neu="" + zaehler + "/" + nenner; return neu;

? Aber das ist nur eine Vermutung.


(2) Was soll
code:
1:
void einfachsteDarstellung()
machen?

Hier stimmt irgendwie gar nix. Das Schlüsselwort "new" wird verwendet um ein Objekt zu erstellen. Auf der linken Seite hat es also nichts verloren. Außerdem gibt es keine Klasse Zähler und auch keine Klasse Nenner.

Was hier evtl. gemacht werden soll ist das Ergebnis als Gleitkommazahl (gerundet) auszugeben. Aber auch hier: Reine Spekulation. (aufgabenstellung?)

(3)
code:
1:
bruchrechnen(int zaeh1er1,int nenner1,int rechenzeichen,int zaehler2,int nenner2)


soll der Konstruktor sein, daher: kein Rückgaebtyp.

(4) Die Aufrufe
code:
1:
bruchAddition(bruch1,bruch2)
sollten

code:
1:
bruchAddition(b1,b2)
heißen, da die Parameter der Methode verwendet werden müssen.

(5) Ohje, ich merke gerade es wird unübersichtlich. bruchAddition(b1,b2) sind Methoden deiner Klasse "rechnen". Um diese aufrufen zu können müsstest du die Klasse erst instanziieren. Das ist sehr verwirrend. Implementiere die Operationen besser innerhalb der Klasse Bruch, denn da gehören sie auch hin:

z.B.:

public bruch addiere( bruch a)
{
int neuerZaehler = zaehler * a.getNenner()
+ nenner * a.getZaehler();
int neuerNenner = nenner * a.getNenner();

return new bruch( neuerZaehler , neuerNenner );
}

Benenne die Getter & Setter am besten auch mit get... und set...

Wenn die Klassenstruktur vorgegeben ist, würde ich dann in der Klasse rechnen die Aufrufe einfach weiterleiten, also z.B.
code:
1:
public bruchAddition(bruch b1, bruch b2) {  return b1.addiere(b2); }


In deinem Code sind noch einige andere Probleme, versuch erst mal das ein paar der Probleme zu beseitigen. Wenn weitere Probleme auftreten, meld dich einfach nochmal.

Viele Grüße,
MaBa
yoyo

das problem ist jetzt nur noch wie ich die 4 rechenarten +,-,*,/ schreiben soll in der klasse rechnen mit den variablen aus der klasse bruch, d.h. ich darf keine neuen variablen in rechnen deklarieren, sondern muss sie durch "a.gibNenner" aus der anderen klasse herholen, soweit ich weiß, was aber irgendwie nicht funktioniert. also könnt ihr mir vielleicht dabei helfen, die 4 rechenarten zu schreiben? unglücklich
Es sind weitere Beiträge zu diesem Thema vorhanden. Klicken Sie hier, um sich alle Beiträge anzusehen.