Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.io.BufferedReader;
- import java.io.IOException;
- import java.io.InputStreamReader;
- public class Binaeraddition {
- public static String addition(String zahl1, String zahl2) {
- String ergebnis = "";
- // mit der Methode prüfeZahl wird überprüft ob die Zahl
- // wirklich nur 1 und 0 enthält
- // Ansonsten wird eine Fehlermeldung ausgegeben(weiter unten)
- if (prüfeZahl(zahl1)) {
- if (prüfeZahl(zahl2)) {
- int laengeZahl1 = zahl1.length();
- int laengeZahl2 = zahl2.length();
- int überzahl = 0;
- String hilfsString = "0";
- // Es wird überprüft, ob eine Zahl länger ist als die andere
- // Die kleinere Zahl wird mit 0en am Anfang aufgefüllt
- if (laengeZahl1 < laengeZahl2) {
- for (int i = 0; i < (laengeZahl2 - laengeZahl1); i++) {
- zahl1 = hilfsString + zahl1;
- }
- } else if (laengeZahl2 < laengeZahl1) {
- for (int i = 0; i < (laengeZahl1 - laengeZahl2); i++) {
- zahl2 = hilfsString + zahl2;
- }
- }
- // Der eigentliche Rechenprozess
- for (int i = (laengeZahl1 - 1); i >= 0; i--) {
- int c1 = (zahl1.charAt(i)) - 48;
- int c2 = (zahl2.charAt(i)) - 48;
- int c3 = c1 + c2 + überzahl;
- überzahl = 0;
- if (c3 == 2) {
- c3 = 0;
- überzahl = 1;
- }
- if (c3 == 3) {
- c3 = 1;
- überzahl = 1;
- }
- ergebnis = c3 + ergebnis;
- }
- } else {
- ergebnis = "Fehler bei Eingabe";
- }
- } else {
- ergebnis = "Fehler bei Eingabe";
- }
- return ergebnis;
- }
- private static boolean prüfeZahl(String zahl) {
- boolean b = true;
- char c;
- for (int i = 0; i < zahl.length(); i++) {
- c = zahl.charAt(i);
- if (c == '1' || c == '0') {
- } else {
- b = false;
- }
- }
- return b;
- }
- private static String formatiereZahl(String zahl, int stellen) {
- String ergebnis = zahl;
- for (int i = 0; i < stellen - zahl.length(); i++) {
- ergebnis = " " + ergebnis;
- }
- return ergebnis;
- }
- public static void main(String[] args) {
- String zahl1;
- String zahl2;
- String ergebnis;
- int maxLaenge;
- // Eingabe
- char choice = 'R';
- while (choice != 'Q') {
- System.out.print("Erste Zahl eingeben: ");
- zahl1 = stringLesen();
- System.out.print("Zweite Zahl eingeben: ");
- zahl2 = stringLesen();
- ergebnis = Binaeraddition.addition(zahl1, zahl2);
- maxLaenge = zahl1.length();
- if (zahl2.length() > maxLaenge)
- maxLaenge = zahl2.length();
- if (ergebnis.length() > maxLaenge)
- maxLaenge = ergebnis.length();
- System.out.println(Binaeraddition.formatiereZahl(zahl1, maxLaenge));
- System.out.println(Binaeraddition.formatiereZahl(zahl2, maxLaenge));
- System.out.println(Binaeraddition.formatiereZahl(ergebnis,
- maxLaenge));
- System.out.print("Neue Rechnung starten (R) oder beenden (Q)? ");
- choice = charLesen();
- }
- }
- private static String stringLesen() {
- BufferedReader reader = new BufferedReader(new InputStreamReader(
- System.in));
- try {
- return reader.readLine();
- } catch (IOException e) {
- System.out.println("Fehler beim Lesen von Tastatur");
- System.exit(1);
- }
- return "";
- }
- private static char charLesen() {
- BufferedReader reader = new BufferedReader(new InputStreamReader(
- System.in));
- try {
- return (char) reader.read();
- } catch (IOException e) {
- System.out.println("Fehler beim Lesen von Tastatur");
- System.exit(1);
- }
- return ' ';
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement