hallo an alle,
ich musste als hausaufgabe ein taschenrechner-programm erstellen. er soll zwei brüche erhalten (zähler sollen ganze zahlen sein, nenner natürliche zahlen außer der null). es funktioniert zwar, aber nur das kürzen des entstandenen bruchs läuft nicht so, wie es soll. es kürzt falsch. komischerweise kürzt es bei der multiplikation und division richtig, aber bei der addition und subtraktion falsch.
könntet ihr mir helfen, den fehler zu korrigieren?
hier mein bytecode:
ich musste als hausaufgabe ein taschenrechner-programm erstellen. er soll zwei brüche erhalten (zähler sollen ganze zahlen sein, nenner natürliche zahlen außer der null). es funktioniert zwar, aber nur das kürzen des entstandenen bruchs läuft nicht so, wie es soll. es kürzt falsch. komischerweise kürzt es bei der multiplikation und division richtig, aber bei der addition und subtraktion falsch.
könntet ihr mir helfen, den fehler zu korrigieren?
hier mein bytecode:
Java:
import java.util.Scanner;
public class taschenrechner {
public static void main (String[] argv) {
Scanner eingabe = new Scanner (System.in);
double zaehler1;
double nenner1;
double quotient_z;
//double gek_zaehler; //gekürzt
//double gek_nenner; //gekürzt
double zaehler2;
double nenner2;
double quotient_n;
char operation;
String operation_s;
double gem_nenner;
long a = 1; //anzahl berechnungen
char key;
String nextkey;
double zaehler1_erw, zaehler2_erw, nenner1_erw, nenner2_erw, quotient_z2;
while (a>=1) { //für die spätere ja/nein abfrage
System.out.println("Geben Sie bitte die Zahlen ein.");
System.out.println("Zaehler vom ersten Quotienten lautet:");
zaehler1 = eingabe.nextDouble();
System.out.println("Nenner vom ersten Quotienten lautet:");
nenner1 = eingabe.nextDouble();
System.out.println("Zaehler vom zweiten Quotienten lautet:");
zaehler2 = eingabe.nextDouble();
System.out.println("Nenner vom zweiten Quotienten lautet:");
nenner2 = eingabe.nextDouble();
System.out.println("Welche Operation soll durchgefuehrt werden? +,-,* oder / ?");
operation_s = eingabe.next();
operation = operation_s.charAt(0);
gem_nenner = nenner1 * nenner2; //gemeinsamer Nenner
//if (nenner1<0 || nenner2<0) { //falls nenner kleiner null
//System.out.println("Beide Nenner muessen groesser null sein.");
//a = 0;} //aus der while-schleife raus
if (nenner1>0 && nenner2>0) { //taschenrechner - haupt
if (operation == '+') { //addition
if (nenner1 == nenner2) { //gleiche nenner
quotient_z = zaehler1 + zaehler2; //zähler des neuen quotienten
if (quotient_z == 0) { //falls zähler gleich null
System.out.println("("+zaehler1+"/"+nenner1+") + ("+zaehler2+"/"+nenner2+") = 0/1");}
else {
double gek_zaehler = 0;
double gek_nenner = 0;
for(int i=1; i<=gem_nenner; i++) {
if (quotient_z % i == 0 && gem_nenner % i == 0) { //falls teilbar
gek_zaehler = quotient_z / i;
gek_nenner = gem_nenner / i;}}
System.out.println("("+zaehler1+"/"+nenner1+")"+"+"+"("+zaehler2+"/"+nenner2+")=("+quotient_z+"/"+nenner1+") = ("+gek_zaehler+")/("+gek_nenner+")");}}
else { //unterschiedliche nenner
if ((zaehler1/nenner1) == ((-zaehler2/nenner2))) {
System.out.println("("+zaehler1+"/"+nenner1+" ) +("+zaehler2+"/"+nenner2+") = 0000/1");}
else {
zaehler1_erw = zaehler1*nenner2; //zahler1 erweitert
zaehler2_erw = zaehler2*nenner1; //zahler2 erweitert
quotient_z=zaehler1_erw + zaehler2_erw; //zähler des neuen quotienten
double gek_zaehler = 0;
double gek_nenner = 0;
for(int i=1; i<=gem_nenner; i++) {
if (quotient_z % i == 0 && gem_nenner % i == 0) { //falls teilbar
gek_zaehler = quotient_z / i;
gek_nenner = gem_nenner / i;}}
System.out.println("("+zaehler1+"/"+nenner1+") + ("+zaehler2+"/"+nenner2+")=("+quotient_z+"/"+gem_nenner+") = ("+gek_zaehler+")/("+gek_nenner+")");}}}
if (operation == '-') { //Subtraktion
if (nenner1 == nenner2) { //gleiche nenner
quotient_z = zaehler1 - zaehler2; //zähler des neuen quotienten
if (quotient_z == 0) { //falls zaehler gleich null
System.out.println("("+zaehler1+"/"+nenner1+") - ("+zaehler2+"/"+nenner2+") = 0/1");} //falls zähler gleich null
else {
double gek_zaehler = 0;
double gek_nenner = 0;
for(int i=1; i<=gem_nenner; i++) {
if (quotient_z % i == 0 && gem_nenner % i == 0) { //falls teilbar
gek_zaehler = quotient_z / i;
gek_nenner = gem_nenner / i;}}
System.out.println("("+zaehler1+"/"+nenner1+") - ("+zaehler2+"/"+nenner2+") = ("+quotient_z+"/"+nenner1+")=("+gek_zaehler+"/"+gek_nenner+")");}}
else { //unterschiedliche nenner
if ((zaehler1/nenner1)==(zaehler2/nenner2)) {
System.out.println("("+zaehler1+"/"+nenner1+") - ("+zaehler2+"/"+nenner2+") = 0/1");}
else {
zaehler1_erw = zaehler1*nenner2; //zahler1 erweitert
zaehler2_erw = zaehler2*nenner1; //zahler2 erweitert
quotient_z=zaehler1_erw - zaehler2_erw; //zähler des neuen quotienten
double gek_zaehler = 0;
double gek_nenner = 0;
for(int i=1; i<=gem_nenner; i++) {
if (quotient_z % i == 0 && gem_nenner % i == 0) { //falls teilbar
gek_zaehler = quotient_z / i;
gek_nenner = gem_nenner / i;}}
System.out.println("("+zaehler1+"/"+nenner1+") - ("+zaehler2+"/"+nenner2+") = ("+quotient_z+"/"+gem_nenner+")=("+gek_zaehler+")/("+gek_nenner+")");}}}
if (operation == '*') { //multiplikation
quotient_z = zaehler1 * zaehler2; //zaehler des neuen quotienten
if (quotient_z == 0) {
System.out.println("("+zaehler1+"/"+nenner1+") * ("+zaehler2+"/"+nenner2+") = 0/1");} //falls zähler gleich null
else {
double gek_zaehler = 0;
double gek_nenner = 0;
for(int i=1; i<=gem_nenner; i++) {
if (quotient_z % i == 0 && gem_nenner % i == 0) { //falls teilbar
gek_zaehler = quotient_z / i;
gek_nenner = gem_nenner / i;}}
System.out.println("("+zaehler1+"/"+nenner1+") * ("+zaehler2+"/"+nenner2+") = ("+quotient_z+"/"+gem_nenner+")=("+gek_zaehler+")/("+gek_nenner+")");}}
if (operation =='/') { //division
if (zaehler2 == 0) {
System.out.println("Man darf nicht durch null teilen.");
a = 0;} //aus der while-schleife raus
else {
quotient_z = zaehler1*nenner2; //zaehler des neuen quotienten
nenner2_erw = zaehler2*nenner1; //nenner des neuen quotienten
double gek_zaehler = 0;
double gek_nenner = 0;
for(int i=1; i<=gem_nenner; i++) {
if (quotient_z % i == 0 && nenner2_erw % i == 0) { //falls teilbar
gek_zaehler = quotient_z / i;
gek_nenner = nenner2_erw / i;}}
System.out.println("("+zaehler1+"/"+nenner1+") / ("+zaehler2+"/"+nenner2+") = ("+quotient_z+"/"+nenner2_erw+")=("+gek_zaehler+")/("+gek_nenner+")");}}
} //taschenrechner - haupt
else {
System.out.println("Beide Nenner muessen echt groesser null sein.");
a=3; //damit die ja/nein frage überschprungen wird
}
if (a!=3) { //falls true, dann frage nach einer weiteren berechnung
System.out.println("Wollen Sie eine weitere Berechnung durchfuehren?(j/n)");
nextkey = eingabe.next();
key = nextkey.charAt(0);
if (key == 'n' || key == 'N') {
a = 0;}} //aus der while-schleife raus
} //while
} // main
} // class taschenrechner
Zuletzt bearbeitet von einem Moderator: