From 0abfb332e32eb97031121036e98ae86158971dc3 Mon Sep 17 00:00:00 2001 From: jannisfingerhut Date: Fri, 10 Feb 2023 04:44:42 +0100 Subject: [PATCH] Anpassung des Codes --- bin/LernProgramm/FunktionenAusgelagert.java | 30 +++ bin/LernProgramm/ProgrammMain.java | 207 ++++++++++++++++++++ bin/LernProgramm/testProgramm.java | 103 ++++++++++ 3 files changed, 340 insertions(+) create mode 100644 bin/LernProgramm/FunktionenAusgelagert.java create mode 100644 bin/LernProgramm/ProgrammMain.java create mode 100644 bin/LernProgramm/testProgramm.java diff --git a/bin/LernProgramm/FunktionenAusgelagert.java b/bin/LernProgramm/FunktionenAusgelagert.java new file mode 100644 index 0000000..5d16e75 --- /dev/null +++ b/bin/LernProgramm/FunktionenAusgelagert.java @@ -0,0 +1,30 @@ +package LernProgramm; + +import java.util.Scanner; + +public class FunktionenAusgelagert { + public static void schaltjahr() { + + System.out.println("Welches Jahr möchtest du untersuchen?"); + + try (Scanner scanner2 = new Scanner(System.in)) { + String jahr = scanner2.nextLine(); + int jahr1 = Integer.parseInt(jahr); + +// Bestimmen+Ausgabe + + if (jahr1 % 400 == 0) + System.out.println("Schaltjahr!"); + else if (jahr1 % 100 == 0) + System.out.println("Kein Schaltjahr!"); + else if (jahr1 % 4 == 0) + System.out.println("Schaltjahr!"); + else + System.out.println("Kein Schaltjahr!"); + } catch (NumberFormatException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + + } + } +} \ No newline at end of file diff --git a/bin/LernProgramm/ProgrammMain.java b/bin/LernProgramm/ProgrammMain.java new file mode 100644 index 0000000..a427267 --- /dev/null +++ b/bin/LernProgramm/ProgrammMain.java @@ -0,0 +1,207 @@ +package LernProgramm; + +import java.util.Random; +import java.util.Scanner; + +public class ProgrammMain { + // Aufzurufende Funktionen + + // Karteikarten + + public static void Karteikarten() { + + try (Scanner input = new Scanner(System.in)) { + + String[][] karteikarten = { { "Was ist die Hauptstadt von Deutschland?", "Berlin" }, + { "Welches ist der größtes Planet in unserem Sonnensystem?", "Jupiter" }, + { "Wer hat die Mona Lisa gemalt?", "Leonardo da Vinci" }, + { "Wer ist der Bundeskanzler von Deutschland?", "Olaf Scholz" }, + + // Sonstige Fragen + }; + + int counter = 0; + for (String[] karteikarte : karteikarten) { + System.out.println(karteikarte[0]); + String answer = input.nextLine(); + if (answer.equalsIgnoreCase(karteikarte[1])) { + System.out.println("Korrekt!"); + counter++; + } else { + System.out.println("Leider falsch. Die richtige Antwort wäre: " + karteikarte[1]); + } + } + System.out.println("Dein Punktestand ist " + counter + " von insgesamt " + karteikarten.length); + } + } + +// Quizz + + public static void Quizz() { + Random rand = new Random(); + try (Scanner scanner = new Scanner(System.in)) { + String[][] questions = { + { "Welche Farbe hat ein Bananen?", "A) Gelb", "B) Grün", "C) Blau", "D) Rot", "A" }, + { "Wie viele Beine hat eine Spinne?", "A) 4", "B) 6", "C) 8", "D) 10", "C" }, + { "Wer hat die Formel E=mc² entwickelt?", "A) Isaac Newton", "B) Albert Einstein", + "C) Galileo Galilei", "D) Stephen Hawking", "B" }, + { "Welches ist der größte Planet im Sonnensystem?", "A) Merkur", "B) Venus", "C) Erde", + "D) Jupiter", "D" } + // Sonstige Fragen + }; + int questionIndex = rand.nextInt(questions.length); + String[] currentQuestion = questions[questionIndex]; + + System.out.println(currentQuestion[0]); + System.out.println(currentQuestion[1]); + System.out.println(currentQuestion[2]); + System.out.println(currentQuestion[3]); + System.out.println(currentQuestion[4]); + String answer = scanner.nextLine(); + + if (answer.equalsIgnoreCase(currentQuestion[5])) { + System.out.println("Richtig!"); + } else { + System.out.println("Falsch!"); + } + + } + } + +// Prinmbis100 + public static void PrimBis100() { + for (int i = 2; i <= 100; i++) { + boolean isPrime = true; + for (int j = 2; j < i; j++) { + if (i % j == 0) { + isPrime = false; + break; + } + } + if (isPrime) { + System.out.print(i + " "); + } + } + } + + // Binärinverter + + public static void Binaerrechner() { + + try (Scanner scanner = new Scanner(System.in)) { + System.out.print("Gebe den ersten Binärcode ein: "); + String binaryCode1 = scanner.nextLine(); + System.out.print("Gebe den zweiten Binärcode ein: "); + String binaryCode2 = scanner.nextLine(); + System.out.print("Gebe die gewünschte Operation ein (+, -, *, /): "); + char operation = scanner.next().charAt(0); + + int result = calculate(binaryCode1, binaryCode2, operation); + System.out.println("Das Ergebnis ist: " + result); + } + } + + 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; + } + + + + + public static void main(String[] args) { + + System.out.println("Willkommen bei diesem kleinen konsolenbasierten Spiel!\n"); + System.out.println("Du hast 3 Spielmodi!\n"); + System.out.println("1. Karteikarten\n"); + System.out.println("2. Quizz\n"); + System.out.println("3. Binaer-Inverter\n"); + System.out.println("4. PrimZahlenAusgabe\n"); + + try (Scanner einleser = new Scanner(System.in)) { + int wahl = einleser.nextInt(); + switch (wahl) { + case 1: + Karteikarten(); + break; + case 2: + Quizz(); + // Funktion + break; + case 3: + Binaerrechner(); + // Funktion + break; + case 4: + PrimBis100(); + // Funktion + break; + case 5: + + System.out.println("Diese Funktion wird derzeit entwickelt! Hab bitte etwas Geduld oder sei kreativ und erstelle dir selber eine Funktion!"); + // Funktion + break; + + default: + System.out.println("Ungültige Eingabe, versuche es bitte erneut!\n"); + } + } + + System.out.println("Programm beendet\n"); + + + + + + + + + } +} diff --git a/bin/LernProgramm/testProgramm.java b/bin/LernProgramm/testProgramm.java new file mode 100644 index 0000000..2a74cf7 --- /dev/null +++ b/bin/LernProgramm/testProgramm.java @@ -0,0 +1,103 @@ +package LernProgramm; + +import static org.junit.jupiter.api.Assertions.*; + +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.jupiter.api.Test; + + +class testProgramm { + + @Test + void test() { + assertTrue(true); + } + + @Test + public void testPrimBis100() { + ByteArrayOutputStream out = new ByteArrayOutputStream(); + System.setOut(new PrintStream(out)); + + ProgrammMain.PrimBis100(); + + assertEquals("2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97 ", out.toString()); + } + @Test + public void testAddition() { + int result = ProgrammMain.calculate("1010", "1011", '+'); + assertEquals(10101, result); + } + @Test + public void testSubtraction() { + int result = ProgrammMain.calculate("1010", "1011", '-'); + result++; + if (result <0 || result >0) { + assertTrue(true); + } + } + @Test + public void testMultiplication() { + int result = ProgrammMain.calculate("1010", "1011", '*'); + result++; + if (result <0 || result >0) { + assertTrue(true); + } + } + + @Test + public void testDivision() { + int result = ProgrammMain.calculate("1010", "1011", '/'); + assertEquals(0, result); + } + + @Test + public void testInvalidOperation() { + int result = ProgrammMain.calculate("1010", "1011", '%'); + assertEquals(0, result); + } + + @Test + public void testAddition1() { + + double result = 2 + 3.5; + assertEquals(5.5, result, 0); + } + @Test + public void testSubtraction1() { + + + + + double result = 5-3.5; + assertEquals(1.5, result, 0); + } + @Test + public void testMultiplication1() { + double result = 5*3.5; + assertEquals(17.5, result, 0); + } + @Test + public void testDivision1() { + double result = 15/10; + assertEquals(1, result, 0); + } + + + + + + @Test + public void testSchaltjahr() { + ByteArrayInputStream in = new ByteArrayInputStream("2000\n".getBytes()); + ByteArrayOutputStream out = new ByteArrayOutputStream(); + System.setIn(in); + System.setOut(new PrintStream(out)); + + FunktionenAusgelagert.schaltjahr(); + + assertEquals("Welches Jahr möchtest du untersuchen?\nSchaltjahr!\n", out.toString()); + } +}