Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Bei einer Übungsaufgabe kam mir ein Problem zum Konstruktor. Aufgabenstellung ist es in einer Klasse GGTSolver einen Konstruktor zu erstellen und eine Methode zu schreiben die den GGT berechnet.
Dannach soll in der Klasse GGTTester die Methode aufgerufen werden und getestet werden.
[Java]public class GGTSolver{
private int m;
private int n;
private int ggt;
//2 Konstruktor AUFBAU public + Klassenname
public GGTSolver(int neuesN, int neuesM){
n=neuesN;
m=neuesM;
}
//3 Getter und Setter
//1 Methode zum GGT berechnen
public static int berechneGGT(int m, int n){
while (m!=n){
if (m > n){
m=m-n;
}
else{
n=n-m;
}
}
return m;
}
}
[/Java]
und
[Java]
public class GGTTester{
public static void main(String[]args){
GGTSolver objekt1 = new GGTSolver(92, 64);
GGTSolver objekt2 = new GGTSolver(100, 50);
Die Klasse GGTSolver lässt sich kompilieren, doch bei der Testklasse kommen bei mir noch 2 Fehlermeldungen, die ich mir nicht erklären kann.
"required int, int
found: no arguments
reason: actual and formal argument lists differ in length
Zeile7 und Zeile8"
Ich hoffe ihr könnt mir etwas weiterhelfen, danke im vorraus.
erwartet als Argumente Werte vom Typ int die du nicht übergibst
Java:
objekt1.berechneGGT();
objekt2.berechneGGT();
entweder du schreibst die Methode so um das sie die schon im Konstruktor übergebenen Parameter verwendet, oder du übergibst die Werte wirklich erst der Methode und nicht dem Konstruktor
Ok in dem Fall scheiterts dann bei mir wohl noch am Verständnis.
Ich verstehe den Konstruktor momentan in etwa so, dass ich ihm Werte neu mitgeben kann und diese dann in der Klasse verwendet werden.
Scheinbar(?) reicht es aber der Methode die Parameter zu geben und dann bekomme ich auch schon Werte.
Also der Code funktioniert dank Eurer Hilfe schon einmal, doch geht es mir jetzt noch um das Verständnis.
[Java]
GGTSolver objekt1 = new GGTSolver(92, 64);
GGTSolver objekt2 = new GGTSolver(100, 50);
[/Java]
Muss ich in dieser Zeile dann überhaupt Werte (92,64) übergeben?
es würde auch schon reichen wenn du mit den Werten arbeiten würdest die du ja bei Objektkonstruktion bereits an den Konstruktor übergibst, so kannst du dir auch die parameter deiner Methode schenken
Allerdings musst du dazu static entfernen !
Java:
public static int berechneGGT(){...}
Wenn du dies als statische methode deklarierst erhältst du keine zugriff auf Objektspeziefische Instanzvariablen !
Java:
public int berechneGGT(){
while (m != n){
if (m > n){
m=m-n;
}
else{
n=n-m;
}
}
return m;
}
hier könnte man auch mit
Code:
this.
arbeiten aber das wäre hier doch relativ unübersichtlich
m und n beziehen sich dann immer auf die jeweiligen Werte welche du dem Objekt bei dessen Konstruktion zuweist.
[TIPP]
Wenn du den
Code:
this.
pointer verwendest kannst du auch die Parameter so benennen wie auch die Instanzvariablen heißen !
Java:
public GGTSolver(int m , int n){
this.m = m;
this.n = n;
}
Zudem solltest du eindeutige und aussagekräftige Variablennamen verwenden!
[/TIPP]