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