Forum: PC-Programmierung Anfänger Frage


von Erik Werner (Gast)


Lesenswert?

Hallo ich habe folgende Frage:
Wie kann man in java in Metode ein Objekt zurück übergeben?

Danke

von Marc (Gast)


Lesenswert?

Mit return.

von Erik Werner (Gast)


Lesenswert?

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
von SkyneT (Gast)


Lesenswert?

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?

von Erik Werner (Gast)


Lesenswert?

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

von Erik Werner (Gast)


Lesenswert?

Wo bist du man? Weist du etwa selber nicht?

von Mathe (Gast)


Lesenswert?

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
  }

von Erik Werner (Gast)


Lesenswert?

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

von Mathe (Gast)


Lesenswert?

Dann ruf doch einfach DEINE Methode "ausgeben" auf, du Genie!

von Erik Werner (Gast)


Lesenswert?

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

von LCD (Gast)


Lesenswert?

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.

von LCD (Gast)


Lesenswert?

Natürlich nur

Bruch.ausgeben(Bruch.multiplizieren(a, b));

von Erik Werner (Gast)


Lesenswert?

> Kauf dir ein Java Buch und lese es auch.

Ich weis nicht was du da liest ABER GEHT NICHT!!!!!!!!!!!!!!!!!!!!

von LCD (Gast)


Lesenswert?

Bei mir funktioniert es. Ich habe auch nicht das Problem vor der 
Tastatur. :-P

von Lurch (Gast)


Lesenswert?

Erik Werner schrieb:
> System.out.println

Ach wie schön einfach und kurz doch so ein echo oder print in anderen 
Sprachen sein kann :)

von Higg G. (higg)


Lesenswert?

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
Noch kein Account? Hier anmelden.