Java :: Aufgabe #129 :: Lösung #4
4 Lösungen
#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
Beispielausgabe:
Zahl 1: 5
Zahl 2: 7
kgV: 35
#4
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:
Java-Code
Methoden aus meiner Methodensammlung:
Java-Code
Main-Klasse:
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:
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
Seite 1 von 0
1
