Größter gemeinsamer Teiler

Lestas89

Bekanntes Mitglied
Wenn ich das Programm starte, wird die Ausgabe unten "Größter gemeinsamer Teiler ist" nicht ausgeführt.

Wo liegt mein Fehler?

Java:
import javax.swing.JOptionPane;

class Programm{
   public static void main(String[]args){
   String eingabe1, eingabe2, ausgabe;
   int zahl1, zahl2, hilf;
  
   eingabe1 = JOptionPane.showInputDialog("Geben Sie eine ganze positive Zahl ein:");
   eingabe2 = JOptionPane.showInputDialog("Geben Sie eine zweite ganze positive Zahl ein");
  
   zahl1 = Integer.parseInt(eingabe1);
   zahl2 = Integer.parseInt(eingabe2);
  
   if(zahl1 <= 0 || zahl2 <= 0){
   JOptionPane.showMessageDialog(null,"Die Zahlen müssen positiv sein!");
   }System.exit(0);
  
   while(zahl2 > 0){
     hilf = zahl1;
     zahl1 = zahl2;
     zahl2 = hilf;
     zahl2 = zahl2 % zahl1;
    
    
   }
  
   JOptionPane.showMessageDialog(null,"Größter gemeinsamer Teiler ist" + zahl1);
   }
}
 
Zuletzt bearbeitet von einem Moderator:
Habe meinen Fehler gefunden. Der Code lautet wie folgt:

Java:
import javax.swing.JOptionPane;

class Programm{
   public static void main(String[]args){
   String eingabe1, eingabe2, ausgabe;
   int zahl1, zahl2, hilf;
 
   eingabe1 = JOptionPane.showInputDialog("Geben Sie eine ganze positive Zahl ein:");
   eingabe2 = JOptionPane.showInputDialog("Geben Sie eine zweite ganze positive Zahl ein");
 
   zahl1 = Integer.parseInt(eingabe1);
   zahl2 = Integer.parseInt(eingabe2);
 
 
   while(zahl2 > 0){
     hilf = zahl1;
     zahl1 = zahl2;
     zahl2 = hilf;
     zahl2 = zahl2 % zahl1;
   
     }
   JOptionPane.showMessageDialog(null,"Größter gemeinsamer Teiler ist " +  zahl1);
 
   }
}

Wie kann ich nun reinbringen, dass auch negative Zahlen berücksichtigt werden?
 
Zuletzt bearbeitet von einem Moderator:
Der Fehler lag ürbigens darin, dass das "System.exit(0);" außerhalb der Klammer war. Schreib das innerhalb der if-Bedingung und es sollte passen.
 
du kannst mittels if-Anweisungen schauen welche zahl größer ist und damit deine Ausgabe füttern. Dann kannst du alle zahlen akzeptieren
if( z1 < z2){

} else if( z1 == z2){
} else{ z1 ist größte zahl}
 
Ich habe das Programm nun erweitert und bekomme den folgenden Fehler zu den Methoden "Identifier expected". Was genau heißt das?

Java:
public class Programm{
   public static int ggT(int m, n){
    
     if(m < 0 || n < 0){
     return -1;
     }
     int hilf;
     while(n > 0){
    
     hilf = m;
     m = n;
     n = hilf;
     n = n % m;
    
    
    
     }
     return m;
    
   }
  
   public static int Durchschnitt(int m, n){
     return (m+n)/2.;
   }
  
   public static void main(String[]args){
    
     int zahl1 = Integer.parseInt(args[1]);
     int zahl2 = Integer.parseInt(args[2]);
    
     if(args[0].equals("Durchschnitt")){
     System.out.println("Der Durchschnitt von"+args[1]+"und"+args[2] + "ist" + Durchschnitt(zahl1, zahl2));
     }
     else if(args[0].equals("ggT"){
     int teiler = ggT(zahl1,zahl2);
     if(teiler == -1)
     System.out.println("Es kann kein Teiler berechnet werden, die Zahlen müssen positiv sein.");
     }
     else{
     System.out.println("Der größte gemeinsame Teiler von"+zahl1+ "und"+zahl2+ "ist"+ teiler);
     }
   }
}
 
Zuletzt bearbeitet von einem Moderator:
Habe meine Fehler gefunden. Allerdings will er mir den größten gemeinsamen Teiler nicht ausgeben wenn ich das Programm mit java Programm "ggT" 30 10 starte.

Der neue Code:
Java:
public class Programm{
   public static int ggT(int m, int n){
    
     if(m < 0 || n < 0){
     return -1;
     }
     int hilf;
     while(n > 0){
    
     hilf = m;
     m = n;
     n = hilf;
     n = n % m;
    
    
    
     }
     return m;
    
   }
  
   public static double Durchschnitt(double m, double n){
     return (m+n)/2.;
   }
  
   public static void main(String[]args){
    
     int zahl1 = Integer.parseInt(args[1]);
     int zahl2 = Integer.parseInt(args[2]);
    
     if(args[0].equals("Durchschnitt")){
     System.out.println("Der Durchschnitt von"+args[1]+"und"+args[2] + "ist" + Durchschnitt(zahl1, zahl2));
     }
     else if(args[0].equals("ggT")){
     int teiler = ggT(zahl1,zahl2);
     if(teiler == -1)
     System.out.println("Es kann kein Teiler berechnet werden, die Zahlen müssen positiv sein.");
     }
     else{
     System.out.println("Der größte gemeinsame Teiler von " +zahl1+ " und "+zahl2+ " ist "+ ggT(zahl1,zahl2));
     }
   }
}
 
Zuletzt bearbeitet von einem Moderator:
Du hast die Klammern falsch gesetzt:
Java:
public class Programm {
    public static int ggT(int m, int n) {

        if (m < 0 || n < 0) {
            return -1;
        }
        int hilf;
        while (n > 0) {

            hilf = m;
            m = n;
            n = hilf;
            n = n % m;

        }
        return m;

    }

    public static double Durchschnitt(double m, double n) {
        return (m + n) / 2.;
    }

    public static void main(String[] args) {
     
     int zahl1 = Integer.parseInt(args[1]);
     int zahl2 = Integer.parseInt(args[2]);

        if (args[0].equals("Durchschnitt")) {
            System.out.println("Der Durchschnitt von" + args[1] + "und" + args[2] + "ist" + Durchschnitt(zahl1, zahl2));
        } else if (args[0].equals("ggT")) {
            int teiler = ggT(zahl1, zahl2);
            if (teiler == -1) {
                System.out.println("Es kann kein Teiler berechnet werden, die Zahlen müssen positiv sein.");
            } else {
                System.out.println(
                        "Der größte gemeinsame Teiler von " + zahl1 + " und " + zahl2 + " ist " + ggT(zahl1, zahl2));
            }
        }
    }
}
 
Zuletzt bearbeitet von einem Moderator:

Zurück
Oben