From 651fae6401f0647704de3daa853f35e228961042 Mon Sep 17 00:00:00 2001 From: jannisfingerhut Date: Fri, 10 Feb 2023 22:41:49 +0100 Subject: [PATCH] =?UTF-8?q?#12=20Bin=C3=A4rRechner=20Funktion=20hinzugef?= =?UTF-8?q?=C3=BCgt=20+=20UnitTest=20erfolgreich?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- LernProgramm/FunktionenAusgelagert.java | 68 ++++++++++++++++++++++++- LernProgramm/testProgramm.java | 5 ++ 2 files changed, 72 insertions(+), 1 deletion(-) diff --git a/LernProgramm/FunktionenAusgelagert.java b/LernProgramm/FunktionenAusgelagert.java index 48b61e6..5fc2ab5 100644 --- a/LernProgramm/FunktionenAusgelagert.java +++ b/LernProgramm/FunktionenAusgelagert.java @@ -21,6 +21,72 @@ public class FunktionenAusgelagert { } - + public static void Binaerrechner() { + + try (Scanner scannerBR = new Scanner(System.in)) { + System.out.print("Gebe den ersten Binärcode ein: "); + String binaerCode1 = scannerBR.nextLine(); + System.out.print("Gebe den zweiten Binärcode ein: "); + String binaerCode2 = scannerBR.nextLine(); + System.out.print("Gebe die gewünschte Operation ein (+, -, *, /): "); + char operation = scannerBR.next().charAt(0); + + int ergebnisBR = calculate(binaerCode1, binaerCode2, operation); + System.out.println("Das Ergebnis ist: " + ergebnisBR); + } + } + + public static int calculate(String binaryCode1, String binaryCode2, char operation) { + + int decimal1 = binaryToDecimal(binaryCode1); + int decimal2 = binaryToDecimal(binaryCode2); + + int result = 0; + switch (operation) { + case '+': + result = decimal1 + decimal2; + break; + case '-': + result = decimal1 - decimal2; + break; + case '*': + result = decimal1 * decimal2; + break; + case '/': + result = decimal1 / decimal2; + break; + default: + System.out.println("Ungültige Operation! Bitte wähle +, -, * oder /."); + return 0; + } + return decimalToBinary(result); + } + + public static int binaryToDecimal(String binaryCode) { + + int decimal = 0; + for (int i = binaryCode.length() - 1; i >= 0; i--) { + char currentChar = binaryCode.charAt(i); + if (currentChar == '1') { + decimal += Math.pow(2, binaryCode.length() - i - 1); + } else if (currentChar != '0') { + System.out.println("Ungültiger Binärcode! Bitte gebe nur Nullen und Einsen ein."); + return 0; + } + } + return decimal; + } + + public static int decimalToBinary(int decimal) { + int binary = 0; + int power = 0; + while (decimal > 0) { + binary += (decimal % 2) * (int) Math.pow(10, power); + decimal /= 2; + power++; + } + return binary; + } + } diff --git a/LernProgramm/testProgramm.java b/LernProgramm/testProgramm.java index 343b694..65d7757 100644 --- a/LernProgramm/testProgramm.java +++ b/LernProgramm/testProgramm.java @@ -27,6 +27,11 @@ class testProgramm { } +@Test + public void testAddition() { + int result = FunktionenAusgelagert.calculate("1010", "1011", '+'); + assertEquals(10101, result); + }