so, ich habe nun meine Klasse RationaleZahl folgendermaßen umgeschrieben:
import java.util.Scanner;
public class RationaleZahl{
private int zaehler;
private int nenner;
Scanner sc = new Scanner (System.in);
public RationaleZahl(){
zaehler=0;
nenner =1;
}
public RationaleZahl(int zaehler, int nenner)
{this.zaehler=zaehler;
this.nenner=nenner;
}
public int getZaehler() {
return zaehler;
}
public void setZaehler(int zaehler) {
this.zaehler = zaehler;
}
public int getNenner() {
return nenner;
}
public void setNenner(int nenner) {
this.nenner = nenner;
}
public RationaleZahl addiere (RationaleZahl z){
return new RationaleZahl (zaehler*z.getNenner()+nenner*z.getZaehler(),nenner*z.getNenner());
}
public RationaleZahl subtrahieren (RationaleZahl z){
return new RationaleZahl (zaehler*z.getNenner()-nenner*z.getZaehler(),nenner*z.getNenner());
}
public RationaleZahl multiplizieren(RationaleZahl z){
return new RationaleZahl (zaehler*z.getZaehler(),nenner*z.getNenner());
}
public RationaleZahl dividieren (RationaleZahl z){
return new RationaleZahl (zaehler*z.getNenner(),nenner*z.getZaehler());
}
public String ausgeben (){
return zaehler + " / "+ nenner;
}
public void kuerzen() {
int i,
n= Math.abs(nenner),
z= Math.abs(zaehler);
while (z > 0){
if( z < n ){
i= n;
n= z;
z= i;
}
z= z - n;
}
nenner= nenner / n;
zaehler= zaehler / n;
}
}
Gehe ich richtig in der Annahme, dass ich in der Klasse nichtsmehr machen kann? Die Konstruktoren sind vorgegeben, die Rechenmethode ist ja gerade veränder worden und die Methde kürzen ist vorgegeben. Ausgabe kann man auch nicht verändern. Das heißt an der Klasse kann ich nichtsmehr ändern?
Jetzt geht es nurnoch um die Klasse Start. Vielleicht kann mir dort auch noch jemand helfen wie ich das anders ausdrücken kann.
Das mit dem "Der würd ich was erzählen" is garnich so einfach, die Frau ist betriebsblind, seit 20 Jahren an der Hochschule und vollkommen Kritikresistent. Lernen tuen wir auch nix...
Hier die Startklasse
import java.util.ArrayList;
import java.util.Scanner;
public class Start {
static Scanner sc = new Scanner(System.in);
public static void main (String []args){
ArrayList <String> ergebnisse =new ArrayList<String>();
String condition;
do{
System.out.print("Bitte geben Sie nun einen Bruch ein: ");
RationaleZahl rz1 = einleseBruch();
System.out.print("Bitte geben Sie nun den Operator an: ");
String op = einlesenOp();
System.out.print("Bitte geben Sie erneut einen Bruch ein: ");
RationaleZahl rz2 = einleseBruch();
RationaleZahl rzE = null;
switch (op){
case "+": rzE = rz1.addiere(rz2);break;
case "-": rzE = rz1.subtrahieren(rz2);break;
case "*": rzE = rz1.multiplizieren(rz2);break;
case "/": rzE = rz1.dividieren(rz2);break;
}
rzE.kuerzen();
System.out.println(rz1.ausgeben()+" "+op+" "+rz2.ausgeben()+" = "+rzE.ausgeben());
ergebnisse.add(rz1.ausgeben()+" "+op+" "+rz2.ausgeben()+" = "+rzE.ausgeben());
System.out.print("erneute Berechnung? (j/n): ");
condition = sc.next();
}while (!condition.equalsIgnoreCase("n"));
System.out.println();
System.out.println("~~~~~~~~~~~~~~~~");
System.out.println("Berechnet wurden: ");
for (String out : ergebnisse) {
System.out.println(out);
}
System.out.println();
System.out.println("Auf Wiedersehen!");
}
public static RationaleZahl einleseBruch(){
Scanner sc = new Scanner(System.in);
String eingabe=sc.nextLine();;
String[] bla = eingabe.split("/");
bla[0]=bla[0].trim();//selbe für bla 1
bla[1]=bla[1].trim();
return new RationaleZahl(Integer.valueOf(bla[0]),Integer.valueOf(bla[1]));
}
public static String einlesenOp(){
Scanner sc = new Scanner (System.in);
return sc.nextLine();
}
}