Bruchrechner

ShowCase

Mitglied
Hallo,
Ich muss einen Rechner programmieren, der über eine Kommandozeile 4 Zahlen einliest, zu Brüchen zusammenfügt, berechnet und kürzt. Ich hab jedoch leider keinen Plan, wie ich anfangen soll. Habe auch bei Google keinen Ansatz zu meinem Problem gefunden.

Mein Ansatz wäre dieser:

import java.util.Scanner;

public class BruchZahl {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);

int zaehler1 = s.nextInt();
int nenner1 = s.nextInt();

int zaehler2 = s.nextInt();
int nenner2 = s.nextInt();




int bruch1 = zaehler1/nenner1;
int bruch2 = zaehler2/nenner2;
 

ShowCase

Mitglied
Okay, schonmal vielen Dank für die Antwort. :)
Allerdings wollte ich mehr auf den Ansatz hinaus, bzw. würde gerne wissen ob das so funktionieren würde mit dem Scanner und Vorschläge sammeln, wie man weiter machen sollte.
 
3

34u4i5

Gast
Also ich würde es so machen:
Klasse Bruch, diese Klasse hat zwei Attribute Nenner und Zähler.
Dann in einer zweiten Klasse zwei Objekte dieser Klasse erstellen und denen die Werte übergeben, die Rechenoperationen ausführen und kürzen.
Die Methode zum kürzen findest du im verlinkten Post.
Zahlen einlesen per Scanner, BufferedReader, JOptionPane, JTextField... usw. Das bleibt dir überlassen.
 

ShowCase

Mitglied
Ich habe jetzt ein wenig programmiert und Ich denke Ich bin soweit fertig (gab noch keinen Testlauf). Allerdings bräuchte ich noch Hilfe beim einbauen des Scanners:
Java:
import java.util.Scanner;



public class ShowCase{



public void BruchZahl(int zaehler1, int nenner1, String zeichen, int zaehler2, int nenner2){

Scanner s = new Scanner(System.in);

int zaehler1 = s.nextInt();

int nenner1 = s.nextInt();

string zeichen = s.nextString();

int zaehler2 = s.nextInt();

int nenner2 = s.nextInt();



try{

if(zeichen.equals("+") || zeichen.equals("/") || zeichen.equals("*") || zeichen.equals("-")){

int oben=0;

int unten=0;

if(zeichen.equals("+") || zeichen.equals("-")){

unten = nenner1 * nenner2;

if(zeichen.equals("+")){

oben = zaehler1 * nenner2 + zaehler2 * nenner1;

}else{

oben = zaehler1 * nenner2 - zaehler2 * nenner1;

}

}else{

if(zeichen.equals("*")){

oben = zaehler1 * zaehler2;

unten = nenner1 * nenner2;

}else{

unten = nenner1 * zaehler2;

oben = zaehler1 * nenner2;

}

}

int zahl = oben / unten;

oben = oben - (unten*zahl);

if(oben < 0){

oben = oben * (-1);

}

if(unten <0){

unten = unten*(-1);

}

System.out.println(zahl+" ("+kuerzen(oben,unten)+")");

}else{

System.out.println("Fehler!");

}

}catch(Exception e){

System.out.println("Fehler!");

}

}

private String kuerzen(int oben, int unten){

if(oben == 1){

return oben+"/"+unten;

}else if(oben%2 == 0 && unten%2 == 0){

oben = oben / 2;

unten = unten/2;

kuerzen(oben,unten);

}else if(oben%3==0 && unten%3==0){

oben = oben/3;

unten = unten/3;

kuerzen(oben,unten);

}else if(oben%5==0 && unten%5==0){

oben = oben/5;

unten = unten/5;

kuerzen(oben,unten);

}else{

return oben+"/"+unten;

}

return kuerzen(oben,unten);

}

}

Würde mich freuen wenn jemand helfen könnte.
 

Xeonkryptos

Bekanntes Mitglied
1. Methodennamen fangen IMMER mit einem Kleinbuchstaben an!
2.
Java:
if (zeichen.equals("+") || zeichen.equals("-")) { 
unten = nenner1 * nenner2; 
if (zeichen.equals("+")) { 
oben = zaehler1 * nenner2 + zaehler2 * nenner1; 
}

würde ich in:
Java:
if (zeichen.equals("-")) { 
unten = nenner1 * nenner2; 
if (zeichen.equals("+")) { 
oben = zaehler1 * nenner2 + zaehler2 * nenner1; 
}
ändern. Der Grund sollte wohl logisch sein.

Außerdem würde ich den Scanner in die Main-Klasse stecken, die die Main-Methode enthält und dort die Parameter dann an deine Klasse übergeben. Außerdem würde der Code nicht funktionieren, da du keine Instanzvariablen hast. Du hast nur lokale Variablen, die nach Ende der Methode wieder gelöscht werden!
 

ShowCase

Mitglied
Ich habs soweit geändert, aber kann mir bitte jemand zeigen, wie es richtig aussehen müsste? Ich habe im Grunde keine Ahnung von Scannern und würde mich über eine Korrektur freuen.
 

Xeonkryptos

Bekanntes Mitglied
Java:
public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		String zeichen = "";
		System.out.print("Zaehler1: ");
		int zaehler1 = scanner.nextInt();
		System.out.print("\nNenner1: ");
		int nenner1 = scanner.nextInt();
		System.out.println("\nZaehler2: ");
		int zaehler2 = scanner.nextInt();
		System.out.println("\nNenner2: ");
		int nenner2 = scanner.nextInt();

		ShowCase showCase = new ShowCase();
		showCase.bruchZahl(zaehler1, nenner1, zeichen, zaehler2, nenner2);
	}

So in etwa habe ich das gemeint. Wo und wie du das Zeichen einliest/übernimmst kannst du selbst dir erschließen, aber auf diese Art und Weise kann man einfach den Scanner nutzen.
 

Ähnliche Java Themen

Neue Themen


Oben