Erste Schritte methode in einer methode ausführen

Koori

Mitglied
hallo alle zusammen!

hab ein Problem, das ich aleine nicht lösen kann:

ich habe eine Methode zum addieren vom Zähler und eine andere Methode zum Ausrechnen vom Nenner. Um Wiederholungen zu vermeiden wollte ich in der Methode die den Zähler ausrechnet, die Methode aufrufen (verknüpfen) die den Nenner ausrechnet.

diese beiden Methoden sind noch in der gleichen klasse!

hier eine freinfachte Version von meinem quellcode:



Java:
public class TestClass
{

    public int numerator;
    public int denominator;


  public void addNum(int numerator, int denominator, int numerator2, int denominator2){
         
         this.numerator = numerator;
         this.denominator = denominator;

        if(numerator == 0 || numerator2 == 0){
        numerator += numerator2;
        }
        else numerator += numerator2;
        
         int finalDenominator = ggT(int, int);
break;
}

    private void ggT(int denominator, int denominator2){
        this.denominator = denominator;
        this.numerator = numerator;
        
        if(denominator == 0 || denominator2 == 0){
            System.out.println("error: denominator must not be = 0");
        }
        

        else while(denominator != denominator2){
        if(denominator > denominator2){
        denominator -= denominator2;
        }
        else{ denominator2 -= denominator;
        }
        }
        
        continue shorten;

        
    }

    private void shorten (){
    int Zahl = ggT(numerator, denominator);
    
     numerator = Zahl!=1 ? numerator/Zahl : numerator;
     
     denominator = Zahl!=1 ? denominator/Zahl : denominator;
     
            System.out.println(numerator);
            System.out.println("/");
            System.out.println(denominator);
    }
    

}




kann mir jemand bitte helfen ;(
 
[JAVA=20]break;[/code]
Warum rufst du mitten in der Methode break auf?
Du kannst break nur in einer Schleife aufrufen!
edit:
für:
Java:
continue shorten;
gilt das gleiche.
 
wenn ich das richtig sehe, willst du was zurückgeben

Java:
 int finalDenominator = ggT(int, int);

das macht man so:

Methodenkopf : statt void den Typen, den du zurückgeben willst
Java:
private int ggT(int denominator, int denominator2){

die Rückgabe:

Java:
 return meineintvariable;
 
Java:
    private void ggT(int denominator, int denominator2){
        this.denominator = denominator;
        this.numerator = numerator;
        }
Numerator wird nicht als Parameter übergeben !

Java:
         int finalDenominator = ggT(int, int);
hier rechnest Du was aus und dann wird nichts damit gemacht, die Parameter fehlen auch.
Die Methode ggT ist VOID, das wird nicht viel kommen 🙂

Etwas Kompilierbares (KSKB) wäre schon besser, ich glaube dass sich in Deinem Anschauungsbeispiel ein paar ungewollte Zusatzfehler eingeschlichen haben.

Pentalon
 
Zuletzt bearbeitet:
Ich habe es so gemacht (ganz abstrakt dargestellt):




Java:
public int fraction(int numerator, int denominator){

numerator *= 8;
denominator *= 10;

return toString(int numerator, int denominator);
}

public String toString(int a, int b){
return numerator+"/"+denominator;
}





im return toString befehl bekomme ich immmer den Fehler ".class" expected, obwohl ein freund von mir genau das gleiche hat und keinen Fehler bekommt beim kompellieren
 
Dass deine [c]toString()[/c]-Methode zwei ints entgegennimmt, steht schon in der Deklaration ebendieser Methode. Lass die beiden [c]int[/c] in Zeile 6 weg.

Ark
 
wird wohl doch nicht genau gleich gewesen sein..

> return toString(numerator, denominator);
statt
> return toString(int numerator, int denominator);
wäre schon ein Fortschritt, Grundregeln zum Aufruf von Methoden beachten

edit:
in der Methode toString auch eher mit eigenen Parametern a und b arbeiten,
als mit Variablen/ Parameter anderer Methoden

edit2:
bei vorhandenen Instanzattributen sind die bei toString() sicher zu bevorzugen, stimme folgenden Postings zu,
toString() ohne Parameter sowie extrem wichtige Standard-Methode von Object, mit Parametern ist es eine beliebige andere,

auch in der fraction()-Methode fraglich, was die Parameter da machen, ob es nicht um die Instanz-Attribute geht?
im Moment werden dort die Instanzattribute nicht geändert, deswegen vielleicht das toString() im Moment so umständlich
 
Zuletzt bearbeitet von einem Moderator:
Ich habe es so gemacht (ganz abstrakt dargestellt):




Java:
public int fraction(int numerator, int denominator){

numerator *= 8;
denominator *= 10;

return toString(int numerator, int denominator);
}

public String toString(int a, int b){
return numerator+"/"+denominator;
}





im return toString befehl bekomme ich immmer den Fehler ".class" expected, obwohl ein freund von mir genau das gleiche hat und keinen Fehler bekommt beim kompellieren

Da fragt man sich, wozu die Methode toString(int a, int b)
die Werte a und b übergeben bekommt, wenn die dort dann keine Rolle spielen..

Dann kann man das auch gleich so machen:


Java:
public int fraction(int numerator, int denominator){

numerator *= 8;
denominator *= 10;

return toString();
}

public String toString(){
return numerator+"/"+denominator;
}
 
numerator und denominator sind Parameter der fraction Methode!
Der toString müssen deshalb die Werte übergeben werden.
Allerdings muss toString diese auch nutzen!
Außerdem muss fraction dann auch einen String zurückgeben!
Java:
public String fraction(int numerator, int denominator) {

		numerator *= 8;
		denominator *= 10;

		return toString(numerator, denominator);
	}

	public String toString(int numerator, int denominator) {
		return numerator + "/" + denominator;
	}
 

Zurück
Oben