Hallo ich habe folgende Frage: Wie kann man in java in Metode ein Objekt zurück übergeben? Danke
Das ist klar.Ich versuche Programm zu schreiben:
1 | import java.io.*; |
2 | |
3 | public class Bruchfunktion { |
4 | |
5 | public static void main(String[] args) throws IOException |
6 | { |
7 | Bruch a =new Bruch (); |
8 | Bruch b =new Bruch (); |
9 | |
10 | |
11 | |
12 | InputStreamReader isr = new InputStreamReader(System.in); |
13 | BufferedReader br = new BufferedReader(isr); |
14 | System.out.print("Geben Sie Zaehler fur bruch a : "); |
15 | String eingabe = br.readLine(); |
16 | a.zaler = Integer.parseInt(eingabe); |
17 | |
18 | |
19 | |
20 | do // do schleife ,weil Nenner von Bruch a darf nicht 0 sein |
21 | { |
22 | /* Testatureingabe von Nenner für bruch a */ |
23 | |
24 | InputStreamReader isr1 = new InputStreamReader(System.in); |
25 | BufferedReader br1 = new BufferedReader(isr1); |
26 | System.out.print("Geben Sie Nenner fur bruch a : "); |
27 | String eingabe1 = br1.readLine(); |
28 | a.nenner = Integer.parseInt(eingabe1); |
29 | } |
30 | while(a.nenner==0); |
31 | |
32 | /*funktion ausgeben bruch a */ |
33 | |
34 | a.ausgeben(a); |
35 | |
36 | |
37 | /* Testatureingabe von Zähler fur bruch b */ |
38 | |
39 | InputStreamReader isr2 = new InputStreamReader(System.in); |
40 | BufferedReader br2 = new BufferedReader(isr2); |
41 | System.out.print("Geben Sie Zaehler fur bruch b : "); |
42 | String eingabe2 = br2.readLine(); |
43 | b.zaler = Integer.parseInt(eingabe2); |
44 | |
45 | do// do schleife ,weil Nenner von Bruch b darf nicht 0 sein |
46 | { |
47 | /* Testatureingabe von Nenner für bruch b */ |
48 | |
49 | InputStreamReader isr3 = new InputStreamReader(System.in); |
50 | BufferedReader br3 = new BufferedReader(isr3); |
51 | System.out.print("Geben Sie Nenner fur bruch b : "); |
52 | String eingabe3 = br3.readLine(); |
53 | b.nenner = Integer.parseInt(eingabe3); |
54 | } |
55 | while(b.nenner==0); |
56 | |
57 | a.multiplizieren(a, b); |
58 | |
59 | |
60 | a.ausrechnen( a); |
61 | /* Ausgabe mit dem Ergebnis ausrechnen(Bruch a) */ |
62 | System.out.println("Bruch a in double ist:" +a.zaler+"/"+a.nenner+"=" +a.ausrechnen( a)); |
63 | |
64 | } |
65 | |
66 | } |
67 | |
68 | public class Bruch { |
69 | public long zaler; |
70 | public long nenner; |
71 | |
72 | |
73 | public static void ausgeben(Bruch a) |
74 | { |
75 | System.out.println("Bruch a ist:"+a.zaler+"/"+a.nenner); |
76 | } |
77 | |
78 | public static Bruch multiplizieren(Bruch a,Bruch b) |
79 | { |
80 | /* Ausgabe als Bruche */ |
81 | |
82 | ?????????????Was soll ich zum Beispiel hier schreiben? |
83 | |
84 | return (?????); und hier? Ich will bruch zurückgeben |
85 | |
86 | } |
87 | public String Ergebnis() |
88 | { |
89 | return zaler+"/"+nenner; |
90 | } |
91 | public static double ausrechnen(Bruch a) |
92 | { |
93 | |
94 | double bruch_a=(double) a.zaler/(double)a.nenner; |
95 | return(bruch_a); |
96 | } |
97 | } |
:
Bearbeitet durch User
Erik Werner schrieb: > public static Bruch multiplizieren(Bruch a,Bruch b) > { > /* Ausgabe als Bruche */ > > ?????????????Was soll ich zum Beispiel hier schreiben? > > return (?????); und hier? Ich will bruch zurückgeben > > } Dann gibst du einen Bruch zurück? wo ist das Problem dabei?
public static Bruch multiplizieren(Bruch a,Bruch b) { /* Ausgabe als Bruche */ ?????????????Was soll ich zum Beispiel hier schreiben? return (Bruch); So ? } Bruch soll so aussehen 3/5 wenn ich Bruch darein schreibe kommt bei mir folgende Fehlermeldung: Bruch cannot be resolved to a variable
Ich empfehle das Studium einem Mathe Buch und einem Java Buch.
1 | public static Bruch multiplizieren(const Bruch a,const Bruch b) |
2 | {
|
3 | Bruch ergebnis = new Bruch(); |
4 | |
5 | ergebnis.zaler = unheimlich komplizierte berechnung; // siehe Mathe Buch |
6 | ergebnis.nenner = unheimlich komplizierte berechnung; // siehe Mathe Buch |
7 | |
8 | return (ergebnis); |
9 | }
|
Mathe schrieb: > Ich empfehle das Studium einem Mathe Buch und einem Java Buch. > public static Bruch multiplizieren(const Bruch a,const Bruch b) > { > Bruch ergebnis = new Bruch(); > > ergebnis.zaler = unheimlich komplizierte berechnung; // siehe > Mathe Buch > ergebnis.nenner = unheimlich komplizierte berechnung; // siehe > Mathe Buch > > return (ergebnis); > } So was könnte ich selber machen du genie.Diefrage ist wie man dass Ausgibt damit wie ein Bruch aussieht. System.out.println(a.multiplizieren(a, b)); Ergebnis:Bruch@1186fab
Mathe schrieb: > Dann ruf doch einfach DEINE Methode "ausgeben" auf, du Genie! Danke habe ich schon kommt so was: System.out.println(a.multiplizieren(a, b)); Ergebnis:Bruch@1186fab
Irgendwie komme ich mir verarscht vor! DU SOLLST DIE METHODE "ausgeben" AUFRUFEN!!!!!!!!!!!!! Versuch es mal so: System.out.println(Bruch.ausgeben(Bruch.multiplizieren(a, b))); Kauf dir ein Java Buch und lese es auch.
> Kauf dir ein Java Buch und lese es auch.
Ich weis nicht was du da liest ABER GEHT NICHT!!!!!!!!!!!!!!!!!!!!
Erik Werner schrieb: > System.out.println Ach wie schön einfach und kurz doch so ein echo oder print in anderen Sprachen sein kann :)
Erik Werner schrieb: > Mathe schrieb: >> Dann ruf doch einfach DEINE Methode "ausgeben" auf, du Genie! > > Danke habe ich schon kommt so was: > System.out.println(a.multiplizieren(a, b)); > > Ergebnis:Bruch@1186fab Ist klar. println erwartet als Parameter einen String. Was passiert, wenn du deine Bruchklasse übergibst? Diese wird automatisch in einen String umgewandelt. Dafür gibt es die Methode toString, die in eigenen Klassen überschrieben werden kann. toString wird aufgerufen, wenn das Objekt in einen String umgewandelt werden muss und muss einen passenden String zurückliefern. Wie überschreibt man diese Methode? So:
1 | class Bruch { |
2 | //... |
3 | @Override |
4 | public String toString() { |
5 | return "Bruch a ist:" + this.zaler + "/" +this.nenner; |
6 | //... |
7 | } |
Allerdings hast du ein ganz anderes Problem. Du verwendet ziellos statische Methoden (static). In einer Klasse wie deiner Bruchklasse ergibt dies keinen Sinn. Lasse also innerhalb dieser Klasse alle static-Angaben weg, und mach dir klar, was das bedeutet. So sehe das ganze etwas besser aus:
1 | public class Bruch { |
2 | public int zaehler,nenner; |
3 | |
4 | public Bruch multiplizieren(Bruch multiplyWith) { |
5 | Bruch Ergebnis = new Bruch(); |
6 | Ergebnis.nenner = this.zaehler * multiplyWith.zaehler; |
7 | Ergebnis.nenner = this.nenner * multiplyWith.nenner; |
8 | return Ergebnis; |
9 | } |
10 | |
11 | public double toDouble() { |
12 | return this.zaehler / this.nenner; |
13 | } |
14 | |
15 | @Override |
16 | public String toString() { |
17 | return this.zaehler + "/" + this.nenner; |
18 | } |
19 | } |
Betonung liegt auf "etwas". Das die Variablen zahler und nenner public sind, ist nicht schön. Außerdem habe ich mir dir Freiheit genommen, deine Methode ausrechnen umzubenennen. Denn sie rechnet nicht einfach etwas aus, sondern konvertiert den Inhalt der Klasse in ein double. Und wenn du ernsthaft Java lernen willst, besorg dir ein vernünftiges Buch. Ich persönlich würde dir das Javabuch von Guido Krüger empfehlen. Didaktisch recht gut, allerdings habe ich keine Ahnung, ob du mit deinem Kentnisstand daraus Nutzen ziehen wirst.
:
Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.