Ermittlung des GGTs zweier Werte

SmittyJoe

Mitglied
Aufgabenstellung:

1. Wandeln Sie die Funktionen um in äquivalente Funktionen, die bedingte Anweisungen statt bedingte
Ausdrücke verwenden.
2. Modifizieren Sie die Funktion ggt derart, dass die Ausnahme IllegalArgumentException geworfen wird,
wenn die Argumente keine positiven ganzen Zahlen sind.
3. Versehen Sie Sie jede Methode mit einen passenden strukturierten Kommentar.

Java:
private static int max(int x, int y) {
return x>y?x:y;
}
private static int min(int x, int y) {
return x<y?x:y;
}
public static int ggt(int x, int y) {
return (x==y) ? x : ggt(max(x,y)-min(x,y), min(x,y));
}


Lösung:

Java:
public class GGT {
	/**
	 * Maximum aus zwei Werten
	 * 
	 * @param x
	 * @param y
	 * @return y : der größere Wert
	 */
	private static int max(int x,int y){
		if(x>y){
			return x;
		}else{
			return y;
		}
		
		/**
		 *Minimum aus zwei Werten
		 *@param x
		 *@param y
		 *@return y : der kleinere Wert
		 */
	private static int min(int x,int y){
		if(x<y){
			return x;
		}else{
			return y;
		}
	}
	
	/**
	 * Der größte gemeinsame Teiler aus zwei Werten
	 *@param x
	 *@param y
	 *@return ggt : der größte gemeinsame Teiler aus x und y
	 */
	public static int ggt(int x,int y){
		if(x==y){
			return x;
		}else{
			return ggt(max(x,y)-min(x,y),min(x,y));
		}
	}
	
    }
}


Bei den Funktionen min und ggt erfolgt nun eine Fehlermeldung, welche besagt:

Illegal modifier for parameter min; only final is permitted


Was hat das genau zu bedeuten? Und sehen hier die strukturierten Kommentare passend aus oder kann man diese verbessern in puncto Form und Inhalt?
 

SmittyJoe

Mitglied
Bei Punkt 2 die Ausnahme, sind try,throw und catch korrekt gesetzt? Wenn nein, wie sieht es korrekterweise aus. Komischerweise wieder ein Klammerfehler lol

Java:
public static int ggt(int x,int y){
		try{
		if(x==y){ throw new IllegalArgumentException("Positive ganze Zahl: ");
			return x;
		}else{
			return ggt(max(x,y)-min(x,y),min(x,y));
		}
		}catch(Exception e){
			System.out.println(e);
			System.out.println("Negativer Wert: ");
		}
		}
	}
}
 
Zuletzt bearbeitet:

njans

Top Contributor
Was du da machst, macht wenig Sinn. Du wirfst eine Exception die du unmittelbar wieder fängst.
Entweder du reichst die exception nach oben weiter (so, dass man beim Aufruf von ggt() den Try-Catch-Block braucht) oder du gibst einfach einen default wert zurück und schreibst als Kommentar, dass Werte deine Bedingung erfüllen müssen.

Die Frage ist auch: Was willst du denn da mit der exception machen ? x == y wirft dann immer eine Exception, das klingt falsch und ist eher unintuitiv.
 

SmittyJoe

Mitglied
Muss mich mal nochmal durch das Thema lesen, doch den Aussagen zu entnehmen müsse der Code nun so aussehen:

Java:
    public static int ggt(int x,int y){throw new IllegalArgumentException(); 
            try{
            if(x==y){ 
                return x;
            }else{
                return ggt(max(x,y)-min(x,y),min(x,y));
            }
            }catch(IllegalArgumentException e){
                System.out.println(e);
                System.out.println("Negativer Wert: ");
            }
            }
        }
    }

Bier und Programmierung nix gut :D
 
Zuletzt bearbeitet:

njans

Top Contributor
So ist der catch-block nutzlos, da dort niemals eine exception fliegen kann.

Java:
    public static int ggt(int x,int y) throws IllegalArgumentException
             {
                if(x <  0 || y < 0)
                    throw new IllegalArgumentException("Irgendein Grund!");
                if(x==y){
                    return x;
                }else{
                    return ggt(max(x,y)-min(x,y),min(x,y));
                }
                }
            }

             public static void main (String[] args)
             {
               try{
                int g = ggt(-5,5);
               } catch(...)
               ...
              }
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
H Frage zur ermittlung eines doppelte Paars aus Sotieralgorithmus Java Basics - Anfänger-Themen 4
R Ermittlung des Werts eines Flags Java Basics - Anfänger-Themen 2
E Compiler-Fehler Programm zur IBAN-Ermittlung Java Basics - Anfänger-Themen 3
J Erste Schritte Zinseszinsberechnung Ermittlung Laufzeit Java Basics - Anfänger-Themen 3
O Index Ermittlung Java Basics - Anfänger-Themen 20
S Programm zu Ermittlung von Primzahlen Java Basics - Anfänger-Themen 14
T ermittlung des minimus zweier eingegebener werte Java Basics - Anfänger-Themen 7
R Ermittlung Anfangs- und Enddatum einer Kalenderwoche Java Basics - Anfänger-Themen 10
S Calendar.set Time, Ermittlung der Anzahl Tage fehlerhaft Java Basics - Anfänger-Themen 9
T Programm zur Ermittlung von freien Speicherplatz Java Basics - Anfänger-Themen 6
S Euklid Algorithmus zur Berechnung des GGTs Java Basics - Anfänger-Themen 2
Fats Waller Compiler-Fehler Kann ich einen String und die Summe zweier Char Werte mittels der println Anweisung ausgeben Java Basics - Anfänger-Themen 4
C Kollision zweier Rechtecke, Schnittpunkte bestimmen Java Basics - Anfänger-Themen 25
C alle möglichen Kombinationen zweier Ziffern auf drei / vier / und 'n" Stellen Java Basics - Anfänger-Themen 11
D Interaktion zweier Objekte Java Basics - Anfänger-Themen 5
J Transformation zweier Integer in ein Double Java Basics - Anfänger-Themen 26
H Gemeinsame Schnittmenge zweier Arrays ausgeben Java Basics - Anfänger-Themen 12
F Erstellen zweier Objekte mit dem selben Inhalt Java Basics - Anfänger-Themen 1
K Datentypen Einträge zweier Matrizen vergleichen Java Basics - Anfänger-Themen 4
K Erste Schritte Berechnung der Summe zweier Arrays Java Basics - Anfänger-Themen 15
S Vergleich zweier ArrayLists mit Ausgabe an dritte ArrayList Java Basics - Anfänger-Themen 5
I Schnittpunkt zweier Geraden berechnen Java Basics - Anfänger-Themen 25
G Klassen Vergleich zweier Klassen Java Basics - Anfänger-Themen 23
S Implementieren zweier Klassen Java Basics - Anfänger-Themen 5
P Ungerade Zahlen ausgeben lassen zwischen Spannweite zweier eingegeben zahlen Java Basics - Anfänger-Themen 6
L Vergleich zweier Variablen, mit Abweichung Java Basics - Anfänger-Themen 3
N Methoden Methode zum Vergleich zweier Geburtstage Java Basics - Anfänger-Themen 5
K Multiplikation zweier Matrizen Java Basics - Anfänger-Themen 23
D Zusammenfassen zweier Programme Java Basics - Anfänger-Themen 3
B Kreuzprodukt zweier Vektoren (Erste Java Aufgabe - Hilfestellungen und Tips erwünscht) Java Basics - Anfänger-Themen 4
M Vergleich zweier Array Stellen mit equals/NullpointerException Java Basics - Anfänger-Themen 9
L BufferdImage schwarzes Bild nach zusammenfügen zweier Bilder Java Basics - Anfänger-Themen 8
N Vergleich zweier String Arrays scheitert Java Basics - Anfänger-Themen 3
C Proportionale Abnahme zweier Werte Java Basics - Anfänger-Themen 4
O ArrayListe sortieren anhand zweier Parameter Java Basics - Anfänger-Themen 4
C Inhalte zweier Vektoren vergleichen Java Basics - Anfänger-Themen 3
T Programm, das die Differenz zweier Daten ausgibt Java Basics - Anfänger-Themen 4
Y Erste Schritte Verknüpfung zweier JAVA-Codes Java Basics - Anfänger-Themen 8
A Methoden Gedanken Anstöße zur Realisierung zweier Ideen (Grafisch Sekunden zählen und Frameaufteilung) Java Basics - Anfänger-Themen 18
I Einlese Abfrage zweier Variablen in einem Fenster Java Basics - Anfänger-Themen 6
A Durchschnitt zweier Mengen berechnen Java Basics - Anfänger-Themen 3
G Kombination zweier Befehle (Preis festlegen & Rabatt berechnen) Java Basics - Anfänger-Themen 3
W Methoden größe zweier tiere vergleichen Java Basics - Anfänger-Themen 15
K Schnitt zweier Ebenen ergibt Gerade Java Basics - Anfänger-Themen 10
L vergleich zweier texte Java Basics - Anfänger-Themen 18
B Vergleich zweier Objekte durch "Hashfunktion" Java Basics - Anfänger-Themen 12
J Addition zweier Zahlen Java Basics - Anfänger-Themen 9
J Dimensionen zweier Arrays vergleichen Java Basics - Anfänger-Themen 4
U Größenvergleich / Dimensionsvergleich zweier Matrizen Java Basics - Anfänger-Themen 2
N Datenaustausch zweier rechner Java Basics - Anfänger-Themen 4
turmaline Gleicheit zweier Listen Java Basics - Anfänger-Themen 12
S Print Methode zweier "Classes" kombinieren Java Basics - Anfänger-Themen 2
C Dateiinhalt zweier Dateien auf Gleichheit prüfen Java Basics - Anfänger-Themen 3
S Addition zweier 32 Byte langer ByteArrays Java Basics - Anfänger-Themen 5
W Unterschiede zweier Dateien herauslesen Java Basics - Anfänger-Themen 7
P Unterschiede zweier System.in Varianten Java Basics - Anfänger-Themen 3
I Abhängigkeiten zweier Klassen Java Basics - Anfänger-Themen 25
G Vergleich zweier Arrays Java Basics - Anfänger-Themen 8
D Eine Nachkommazahl zweier Double vergleichen Java Basics - Anfänger-Themen 4
N sortieren zweier abhängiger array listen Java Basics - Anfänger-Themen 12
S Addieren zweier Arrays Java Basics - Anfänger-Themen 10
G größere zweier zahlen ermitteln und ausgeben Java Basics - Anfänger-Themen 6
G Summe zweier doubles falsch? Java Basics - Anfänger-Themen 10
I Kollision zweier Rechtecke Java Basics - Anfänger-Themen 9
H Genauigkeit beim Multiplizieren zweier Zahlen Java Basics - Anfänger-Themen 2
K Vergleich zweier Objekte in einer HashMap Java Basics - Anfänger-Themen 6
B Zusammenspiel zweier JFrames Java Basics - Anfänger-Themen 2
A Schnitt zweier Rechtecke ermitteln Java Basics - Anfänger-Themen 2
N Vergleich zweier Elemente verschiedener Vectoren Java Basics - Anfänger-Themen 2
G Vergleich zweier 'long'-Werte. Problem! Java Basics - Anfänger-Themen 6
T Inhalte zweier Variablen tauschen Java Basics - Anfänger-Themen 18
U Maximum zweier Zahlen ermitteln Java Basics - Anfänger-Themen 7
N Den Inhalt zweier Strings (Zahlen) addieren Java Basics - Anfänger-Themen 5
S maximum zweier Zahlen Java Basics - Anfänger-Themen 1

Ähnliche Java Themen

Neue Themen


Oben