Java :: Aufgabe #129 :: Lösung #4

4 Lösungen Lösungen öffentlich
#129

Bestimmung des kleinsten gemeinsamen Vielfachen (kgV)

Anfänger - Java von Nachbar - 09.07.2016 um 10:08 Uhr
Schreibe ein Programm zur Bestimmung des kgV zweier natürlicher Zahlen (siehe Beispiel zur kgV-Berechnung). Die Berechnung soll ohne Beteiligung des größten gemeinsamen Teilers erfolgen.

Beispielausgabe:
Zahl 1: 5
Zahl 2: 7

kgV: 35
#4
vote_ok
von nOrdan (1160 Punkte) - 23.07.2019 um 18:07 Uhr
Es ist etwas komplizierter geworden, aber es funktioniert und das auch mit sehr großen Zahlen


Main-Klasse:


Quellcode ausblenden Java-Code


import java.math.BigInteger;

import Methodensammlung.Methoden;

/**
 * Schreibe ein Programm zur Bestimmung des kgV zweier natürlicher Zahlen (siehe Beispiel zur kgV-Berechnung). Die Berechnung soll ohne Beteiligung des größten gemeinsamen Teilers erfolgen.
 * 
 * Beispielausgabe:
 * 
 * Zahl 1: 5
 * Zahl 2: 7
 * 
 * kgV: 35 
 * 
 * @author (nOrdan) 
 * @version (23.07.2019)
 */

public class KGV
{

    Methoden m = new Methoden();

    public static void main(String [] args)
    {
        KGV kgv = new KGV();
        kgv.inputs();
    }

    private void inputs()
    {
        boolean valid1 = false;
        BigInteger zahl1 = new BigInteger("0");
        BigInteger zahl2 = new BigInteger("0");        
        while (valid1 == false)
        {
            String input1 = m.userInput("Geben sie die erste Zahl ein");
            m.errorStringInput(input1);
            if (input1.matches("[0-9]+"))
            {
                zahl1 = zahl1.add(new BigInteger(input1));
                break;
            }
            else
            {
                m.errorMessage("Ihre Eingabe enthält ungültige Zeichen","Ungültiges Zeichen");
                continue;
            }            
        }
        while (valid1 == false)
        {
            String input2 = m.userInput("Geben sie die zweite Zahl ein");
            m.errorStringInput(input2);
            if (input2.matches("[0-9]+"))
            {
                zahl2 = zahl2.add(new BigInteger(input2));
                break;
            }
            else
            {
                m.errorMessage("Ihre Eingabe enthält ungültige Zeichen","Ungültiges Zeichen");
                continue;
            }     
        }
        berechnen(zahl1,zahl2);
    }

    public void berechnen(BigInteger zahl1, BigInteger zahl2)
    {
        boolean valid1 = false;
        BigInteger kleineAddition = new BigInteger("0");
        BigInteger großeAddition = new BigInteger("0");
        if (zahl1.compareTo(zahl2) == 1)
        {
            großeAddition = new BigInteger(zahl1.toString());
            kleineAddition = new BigInteger(zahl2.toString());
            zahl2 = großeAddition;
            zahl1 = kleineAddition;
        }
        else if (zahl1.compareTo(zahl2) == -1)        
        {
            großeAddition = new BigInteger(zahl2.toString());
            kleineAddition = new BigInteger(zahl1.toString());
        }
        else
        {
            großeAddition = new BigInteger(zahl1.toString());
            kleineAddition = new BigInteger(zahl2.toString());
            m.informationMessage("Das kleinste gemeinsame Vielfache von " + kleineAddition + " und " + großeAddition + " beträgt: " + zahl1,"kgV gefunden");
            System.exit(0);
        }            
        while (valid1 == false)
        {
            if (zahl1.compareTo(zahl2) == 0)
            {
                break;
            }
            else
            {
                zahl2 = zahl2.add(großeAddition);
            }
            while(zahl1.compareTo(zahl2) == -1)
            {
                zahl1 = zahl1.add(kleineAddition);
            }
        }
        m.informationMessage("Das kleinste gemeinsame Vielfache von " + kleineAddition + " und " + großeAddition + " beträgt: " + zahl1,"kgV gefunden");
    }
}



Methoden aus meiner Methodensammlung:

Quellcode ausblenden Java-Code

public String userInput(String message)
    {
        return JOptionPane.showInputDialog(message);
    }

public void errorStringInput(String input)
    {
        if (input == null) 
        {
            System.exit(0); //Drückt der User auf abbrechen wird null zurück gegeben und das Programm wird beendet
        }
        else if (input.isEmpty() == true)
        {
            informationMessage("Da sie nichts eingegeben haben wird auch nichts ausgegeben","No input");
            System.exit(0);
        }
    }

public void errorMessage(String message,String errorName)
    {
        JOptionPane.showMessageDialog(null,message,errorName,JOptionPane.ERROR_MESSAGE); 
    }

public void informationMessage(String message,String informationName)
    {
        JOptionPane.showMessageDialog(null,message,informationName,JOptionPane.INFORMATION_MESSAGE);
    }

Kommentare:

Für diese Lösung gibt es noch keinen Kommentar

Bitte melden Sie sich an um eine Kommentar zu schreiben.
Kommentar schreiben
2096408

Du scheinst einen AdBlocker zu nutzen. Ich würde mich freuen, wenn du ihn auf dieser Seite deaktivierst und dich davon überzeugst, dass die Werbung hier nicht störend ist.