BruchrechnerTest

alapychak07

Mitglied
Hallo

Ich habe hier eine Aufgabe von JAVA und finde leider keinen Ansatz diese zu lösen.
Es geht um folgendes:
*Erstellen Sie ein Programm BruchrechnerTest, mit den Testmethoden addTest, mulTest, divTest, subTest und kuerzenTest ohne Parameter oder Rückgabewert.
 Implementieren Sie in BruchrechnerTest eine main-Methode, die alle Testmethoden jeweils einmal aufruft.
 Die Testmethoden rufen jeweils ihre entsprechende Methode (also zB addTest die Methode add) in Bruchrechner auf und überprüft, ob das Ergebnis richtig ist. Verwenden Sie zur Überprüfung des Ergebnisses eine Methode void erwarteGleichheit(…), die zwei (oder vier) Parameter hat und ausgibt, ob die beiden Werte (oder Wertpaare) gleich sind oder nicht.
 Definieren Sie in den fünf Testmethoden jeweils mindestens drei interessante Testfälle, wie negative Werte, sehr große oder sehr kleine Werte und die Null. Probieren Sie, ob Ihr Programm in allen Fällen richtig arbeitet, indem Sie alle Tests automatisch durchführen. Ihr Ziel als Tester ist es, scheiternde Tests zu schreiben, also Fälle zu finden, in denen Ihr Programm nicht richtig arbeitet.
Hier habe ich schon den Bruchrechner:

Java:
class Bruch{
public static void main(String[] args) {
    int z1   = Integer.parseInt(args[1]);
    int n1  = Integer.parseInt(args[2]);
    int z2   = Integer.parseInt(args[3]);
    int n2   = Integer.parseInt(args[4]);
    int[] e = new int[2];
 
if( n1 != 0 || n2 != 0){
        if(args[0].equals("add")){
                e = add(z1,n1,z2,n2);
                ausgeben(e);
           
        }
   
        if(args[0].equals("sub")){
                e = sub(z1,n1,z2,n2);
                ausgeben(e);
        }
           
        if(args[0].equals("mul")){
                e = mul(z1,n1,z2,n2);
                ausgeben(e);
        }
           
        if(args[0].equals("div")){
            if(z2 != 0) {
                e = div(z1,n1,z2,n2);
                ausgeben(e);
        } else{
            System.out.println("Man darf nicht durch 0 teilen");
            }
        } 
    } else {
    System.out.println("Man darf nicht durch 0 teilen");
    }
 
 }
 
 
    static int[] eukl(int ergZ,int ergN){
        int a = Math.abs(ergZ);
        int b = Math.abs(ergN);
        int f;
        if(a==0) {
        f=b;}
 
        else{
            while(b !=0){
                if(a>b){
                a = a-b;}
                else{ b = b-a; }
            }
     
            f=a;
        }
 
        return new int[] {ergZ/f, ergN/f};
 
 
    }
 
 
    static int[] add(int z1,int n1,int z2,int n2){
        int ergZ =z1 * n2 + n1 * z2;
        int ergN = n1 * n2;
        int[] z = eukl(ergZ,ergN);
        return z;
    }
 
    static int[] sub(int z1,int n1,int z2,int n2){
        int ergZ =z1 * n2 - n1 * z2;
        int ergN = n1 * n2;
        int[] z = eukl(ergZ,ergN);
        return z;
    }
 
    static int[] mul(int z1,int n1,int z2,int n2){
        int ergZ =z1 * z2;
        int ergN = n1 * n2;
        int[] z = eukl(ergZ,ergN);
        return z;
    }
 
    static int[] div(int z1,int n1,int z2,int n2){
        int temp = z2;
        z2 = n2;
        n2 = temp;
 
 
 
        int ergZ =z1 * z2;
        int ergN = n1 * n2;
        int[] z = eukl(ergZ,ergN);
        return z;
    }
 
    static void ausgeben(int[]e){
   
        System.out.println(e[0]+"/"+e[1]);
 
    }
}
Kann mir hierzu jemand Tipps geben diese Aufgabe zu meistern?
Danke schonmal ;)
 

Robat

Top Contributor
Was genau verstehst du denn nicht? Es steht ja fast schon alles so in der Aufgabe und du musst es nur noch in "Java übersetzen".
- mach erstmal die Klasse BruchrechnerTest und erstell die 5 geforderten Methoden ohne Parameter und Rückgabewert
- leg in dieser Klasse eine main-Methode an die die 5 o.g. Methoden jeweils 1 mal aufruft
- erwarteGleichheit(…) soll 2 oder 4 Werte entgegen nehmen und diese auf Gleichheit prüfen. Ich denke mal, dass hier eine Konsolenausgabe gefordert ist (?)

Fang erstmal an das Grundgerüst der Klasse zu bauen und dann die Methoden Schritt für Schritt mit Leben zu füllen
 

alapychak07

Mitglied
ich habe schon ein paar Schritte gemacht

Java:
class Test{
public void test() {
int[]erg= Bruch.add (1,2,3,4);
int[]erw= {5,4};
erwarteGleichheit(erg,erw);
}

     void erwarteGleichheit(int[]ist,int[]soll) {
        if(ist[0]==soll[0]||ist[1]==soll[1]);
 System.out.println("test ok");
else System.out.println("fehler");
}
}
Ist es so richtig?
 

Robat

Top Contributor
Nein ist es nicht.
1. Der Klassenname ist nicht wie in der Aufgabe gefordert
2. Die Test-Methoden fehlen
3. Hinter einem if-Statement kommt kein Semikolon
 

alapychak07

Mitglied
Java:
class BruchrechnerTest {
public static void main(String[] args) {

public void Addtest() {
int[]erg = Bruch.add (1,2,3,4);
int[]erw = {5,4};
erwarteGleichheit(erg,erw);
}

     void erwarteGleichheit(int[]ist,int[]soll) {
        if(ist[0]==soll[0]||ist[1]==soll[1])
 System.out.println("test ok");
else System.out.println("fehler");
}
public void Subtest() {
int[]erg = Bruch.add (1,2,3,4);
int[]erw = {-1,4};
erwarteGleichheit(erg,erw);
}

     void erwarteGleichheit(int[]ist,int[]soll) {
        if(ist[0]==soll[0]||ist[1]==soll[1])
 System.out.println("test ok");
else System.out.println("fehler");
}

public void Divtest() {
int[]erg = Bruch.add (1,2,3,4);
int[]erw = {2,3};
erwarteGleichheit(erg,erw);
}

     void erwarteGleichheit(int[]ist,int[]soll) {
        if(ist[0]==soll[0]||ist[1]==soll[1])
 System.out.println("test ok");
else System.out.println("fehler");
}

public void Multest() {
int[]erg = Bruch.add (1,2,3,4);
int[]erw = {3,8};
erwarteGleichheit(erg,erw);
}

     void erwarteGleichheit(int[]ist,int[]soll) {
        if(ist[0]==soll[0]||ist[1]==soll[1])
 System.out.println("test ok");
else System.out.println("fehler");
}
}
}
 

Robat

Top Contributor
Und jetzt beschreibst du mal noch dein aktuelles Problem ;)
Macht der Code das, was du erwartest? Wenn nicht - was erwartest du / was macht er?
 

Neue Themen


Oben