Hallo,
ich bin seid neustem erst dabei Java zu lernen und bin deshalb noch nicht ganz so bewandert was das Thema angeht, und hoffe mir von euch etwas Hilfe. Und zwar geht es um folgende Aufgabe:
Schreiben Sie eine Java–Applikation als ausführbare Jar–Datei mit der Brüche addiert werden können. Die Anwendung
soll zwei Zahlenpaare einlesen, diese als Brüche interpretieren und dann die Summe als Bruch in Form eines Zahlenpaares ausgeben. Die Anwendung muss als Erweiterung um die Klasse Rechnen mit folgender Vorgabe realisiert werden.
Hier die Vorlage
Die Klasse Rechnen muss folgenden JUnit-Test bestehen:
So hier mein Code für die Klasse Rechnen:
Problem ist jetzt das ich mit meinem jetzigen Code den JUnit-Test nich bestehe, habe auch alle fälle mal einzeln eingeben und das Problem liegt wohl bei
da mir bei der Eingabe der wert z.B. 0 ,2, -1, 2 das Programm einfach abschmiert und ich keine Ahnung habe warum :bahnhof: , und was ich auch nicht weiß wie ich es angehen soll ist dieser Teil:
Ich hoffe ihr könnt mir weiterhelfen und mein Code ist nicht zu schlimm programmiert und mache mich nicht lächerlich damit :rtfm:
Danke schonmal :applaus:
ich bin seid neustem erst dabei Java zu lernen und bin deshalb noch nicht ganz so bewandert was das Thema angeht, und hoffe mir von euch etwas Hilfe. Und zwar geht es um folgende Aufgabe:
Schreiben Sie eine Java–Applikation als ausführbare Jar–Datei mit der Brüche addiert werden können. Die Anwendung
soll zwei Zahlenpaare einlesen, diese als Brüche interpretieren und dann die Summe als Bruch in Form eines Zahlenpaares ausgeben. Die Anwendung muss als Erweiterung um die Klasse Rechnen mit folgender Vorgabe realisiert werden.
Hier die Vorlage
Java:
package rechnen;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JTextField;
/**
* @author Name, Vormae, Matrikelnummer
*/
public class UserInterface {
public static void main(String[] args) {
while (true) {
String[] userData = getData_Dialog();
if (userData == null) break;
int z1 = 0;
int n1 = 0;
int z2 = 0;
int n2 = 0;
try {
z1 = Integer.parseInt(userData[0]);
n1 = Integer.parseInt(userData[1]);
z2 = Integer.parseInt(userData[2]);
n2 = Integer.parseInt(userData[3]);
} catch (NumberFormatException e) {
JOptionPane.showMessageDialog(null,
"Bitte nur ganze Zahlen eingeben, Nenner != 0");
continue;
}
try {
JOptionPane.showMessageDialog(null,
"Summe: " + Rechnen.bruchAddition(z1, n1, z2, n2));
} catch (IllegalArgumentException e) {
JOptionPane.showMessageDialog(null,
"Mindestens eine der Zahlen war nicht im vorgebenen Bereich");
}
}
JOptionPane.showMessageDialog(null, "Danke und auf Wiedersehen!");
System.exit(0);
}
private static String[] getData_Dialog() {
JTextField z1TF = new JTextField();
JTextField n1TF = new JTextField();
JTextField z2TF = new JTextField();
JTextField n2TF = new JTextField();
Object[] message = {
"Zaehler 1", z1TF, "Nenner 1", n1TF,
"Zaehler 2", z2TF, "Nenner 2", n2TF};
Object[] options = { "Addition", "Abbruch" };
int n = JOptionPane.showOptionDialog(new JFrame(),
message,
"Brueche Addieren",
JOptionPane.YES_NO_OPTION,
JOptionPane.QUESTION_MESSAGE,
null,
options,
options[0]);
if(n == JOptionPane.OK_OPTION){ // Zustimmung
return new String[]{
z1TF.getText(), n1TF.getText(),
z2TF.getText(), n2TF.getText()};
} else if(n == JOptionPane.NO_OPTION // Verneinung
|| n == JOptionPane.CLOSED_OPTION){ // Dialogfenster geschlossen
return null;
} else {
return null;
}
}
}
Die Klasse Rechnen muss folgenden JUnit-Test bestehen:
Java:
package rechnen;
import static org.junit.Assert.*;
import org.junit.Test;
public class RechnenTest {
@Test
public void test() {
assertEquals("Zaehler = 1 Nenner = 1",
rechnen.Rechnen.bruchAddition(1, 3, 2, 3));
assertEquals("Zaehler = 1 Nenner = 1",
rechnen.Rechnen.bruchAddition(5, 8, 3, 8));
assertEquals("Zaehler = 1 Nenner = 1",
rechnen.Rechnen.bruchAddition(10, 16, 3, 8));
assertEquals("Zaehler = 1 Nenner = 3",
rechnen.Rechnen.bruchAddition(-1, 3, 2, 3));
assertEquals("Zaehler = -1 Nenner = 2",
rechnen.Rechnen.bruchAddition(0, 2, -1, 2));
assertEquals("Zaehler = -2 Nenner = 3",
rechnen.Rechnen.bruchAddition(-1, 3, 1, -3));
try {
rechnen.Rechnen.bruchAddition(1, 1, 1, 0);
fail();
} catch (IllegalArgumentException e) {
assertTrue(true);
}
try {
rechnen.Rechnen.bruchAddition(Integer.MAX_VALUE, 1, 1, 1);
fail();
} catch (IllegalArgumentException e) {
assertTrue(true);
}
assertEquals("Zaehler = 1 Nenner = "+Integer.MAX_VALUE,
rechnen.Rechnen.bruchAddition(0, Integer.MAX_VALUE, 1, Integer.MAX_VALUE));
}
}
So hier mein Code für die Klasse Rechnen:
Java:
package rechnen;
public class Rechnen {
public static String bruchAddition(int z1, int n1, int z2, int n2) {
int Nenner = n1 * n2;
if (Nenner == 0) {
throw new IllegalArgumentException();
} else {
int Zaehler = (z1 * n2) + (n1 * z2);
int Zaehlerkrz = Zaehler / ggt(Zaehler, Nenner);
int Nennerkrz = Nenner / ggt(Zaehler, Nenner);
return (Zaehlerkrz + "/" + Nennerkrz);
}
}
public static int ggt(int a, int b) {
while (a != b) {
if (a > b)
a = a - b;
else
b = b - a;
}
return a;
}
}
Problem ist jetzt das ich mit meinem jetzigen Code den JUnit-Test nich bestehe, habe auch alle fälle mal einzeln eingeben und das Problem liegt wohl bei
Java:
assertEquals("Zaehler = -1 Nenner = 2",
rechnen.Rechnen.bruchAddition(0, 2, -1, 2));
assertEquals("Zaehler = -2 Nenner = 3",
rechnen.Rechnen.bruchAddition(-1, 3, 1, -3));
Java:
try {
rechnen.Rechnen.bruchAddition(Integer.MAX_VALUE, 1, 1, 1);
fail();
} catch (IllegalArgumentException e) {
assertTrue(true);
}
assertEquals("Zaehler = 1 Nenner = "+Integer.MAX_VALUE,
rechnen.Rechnen.bruchAddition(0, Integer.MAX_VALUE, 1, Integer.MAX_VALUE));
}
}
Ich hoffe ihr könnt mir weiterhelfen und mein Code ist nicht zu schlimm programmiert und mache mich nicht lächerlich damit :rtfm:
Danke schonmal :applaus: