diff --git a/LernProgramm/.gitkeep b/LernProgramm/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/LernProgramm/FunktionenAusgelagert.java b/LernProgramm/FunktionenAusgelagert.java new file mode 100644 index 0000000..bf35346 --- /dev/null +++ b/LernProgramm/FunktionenAusgelagert.java @@ -0,0 +1,235 @@ +//created by Jannis Fingerhut + + +package LernProgramm; + +import java.util.Random; +import java.util.Scanner; + +public class FunktionenAusgelagert { + +//Funktionen, die von der main Funktion ausgelagert wurden, +//da diese sonst zu unüberscihtlich gewesen wär und die main untergegangen wäre +//Hier können weitere Funtionen untergebracht werden! + +//1 + public static void Karteikarten() { + + try (Scanner eingabeKK = new Scanner(System.in)) { +//Aufruf + + 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" }, + { "Wer hat den Z1 entworfen?", "Zuse" }, { "W", "Olaf Scholz" }, + { "Wer ist der Bundeskanzler von Deutschland?", "Olaf Scholz" }, + // Sonstige Fragen können hier eingefügt werden + }; + + int PunkteZähler = 0; + for (String[] karteikarte : karteikarten) { + System.out.println(karteikarte[0]); + String answer = eingabeKK.nextLine(); + if (answer.equalsIgnoreCase(karteikarte[1])) { + System.out.println("Korrekt!"); + PunkteZähler++; + } else { + System.out.println("Leider falsch. Die richtige Antwort wäre: " + karteikarte[1]); + } + } + System.out.println("Dein Punktestand ist " + PunkteZähler + " von insgesamt " + karteikarten.length); + } + } + +//2 + public static void Fakultaet() { + + try (Scanner eingabeFK = new Scanner(System.in)) { + String ein = eingabeFK.nextLine(); + int zahlFK = Integer.parseInt(ein); + + if (zahlFK <= 0) { + System.out.println("1"); + } + int ergebnis = 1; + for (int i = 1; i <= zahlFK; i++) { + ergebnis *= i; + } + System.out.println(ergebnis); + } catch (NumberFormatException e) { + e.printStackTrace(); + } + + } + +//3 + public static void schaltjahr() { + + System.out.println("Welches Jahr möchtest du untersuchen?"); + + try (Scanner einSJ = new Scanner(System.in)) { + String jahr = einSJ.nextLine(); + int schaltjahr = Integer.parseInt(jahr); + + if (schaltjahr % 400 == 0) + System.out.println("Schaltjahr!"); + else if (schaltjahr % 100 == 0) + System.out.println("Kein Schaltjahr!"); + else if (schaltjahr % 4 == 0) + System.out.println("Schaltjahr!"); + else + System.out.println("Kein Schaltjahr!"); + } catch (NumberFormatException e) { + e.printStackTrace(); + + } + } + +//4 + public static void Quizz() { + Random rand = new Random(); + try (Scanner einQ = new Scanner(System.in)) { + String[][] fragen = { { "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(fragen.length); + String[] currentQuestion = fragen[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 antwort = einQ.nextLine(); + + if (antwort.equalsIgnoreCase(currentQuestion[5])) { + System.out.println("Richtig!"); + } else { + System.out.println("Falsch!"); + } + + } + } + +//5 + 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); + } + } +//5 + 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); + } +//Hilfe + 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; + } +//Hilfe + 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; + } + +//6 + public static void PrimBis100() { + for (int i = 2; i <= 100; i++) { + boolean istPrimZahl = true; + for (int j = 2; j < i; j++) { + if (i % j == 0) { + istPrimZahl = false; + break; + } + } + if (istPrimZahl) { + System.out.print(i + " "); + } + } + } + +//7 + public static void EasterEgg() { + System.out.println(" _______"); + System.out.println(" / \\"); + System.out.println(" ( 0 0 )"); + System.out.println(" \\ --- /"); + System.out.println(" ------"); + } +//8 + public static void Timer() { + try (Scanner input = new Scanner(System.in)) { + int actualTime = (int) (Math.random() * 10 + 1); + System.out.print("Schätzen Sie die Zeit, die in Sekunden verstreichen wird (1-10): "); + int estimatedTime = input.nextInt(); + System.out.println("Tatsächliche Zeit: " + actualTime + " Sekunden"); + System.out.println("Geschätzte Zeit: " + estimatedTime + " Sekunden"); + int difference = Math.abs(actualTime - estimatedTime); + System.out.println("Differenz: " + difference + " Sekunden"); + if (difference == 0) { + System.out.println("Perfekte Schätzung!"); + } else if (difference <= 2) { + System.out.println("Sehr gute Schätzung!"); + } else if (difference <= 4) { + System.out.println("Gute Schätzung."); + } else { + System.out.println("Schlechte Schätzung."); + } + } + } + + // Test, wenn Sie das lesen, sind Sie toll! +} \ No newline at end of file diff --git a/LernProgramm/ProgrammMain.java b/LernProgramm/ProgrammMain.java new file mode 100644 index 0000000..c534c58 --- /dev/null +++ b/LernProgramm/ProgrammMain.java @@ -0,0 +1,62 @@ +//created by Jannis Fingerhut + +package LernProgramm; + +import java.util.Scanner; + +public class ProgrammMain { + + // Dies ist die Main Methode die quasi alles steuert und aufruft + public static void main(String[] args) { + + System.out.println("Willkommen bei diesem kleinen konsolenbasierten 'LernProgrammm'!\n" + + "Dieses Programm wurde von Arthur M, Dominik G. Frederick F. und Jannis F. enntwickelt"); + + System.out.println("Du hast x Spielmodi!\n" + "1. Karteikarten\n" + "2. Quizz\n" + "3. Binaer-Inverter\n" + + "4. PrimZahlen bis 100\n" + "5. Schaltjahrberechnung\n" + "6. Schätzung der Zeit\n" + "7. ?\n" + + "8. ...\n"); + + Scanner einleser = new Scanner(System.in); + + int wahl = einleser.nextInt(); + switch (wahl) { + case 1: + FunktionenAusgelagert.Karteikarten(); + break; + case 2: + FunktionenAusgelagert.Quizz(); + + break; + case 3: + FunktionenAusgelagert.Binaerrechner(); + break; + case 4: + FunktionenAusgelagert.PrimBis100(); + break; + case 5: + FunktionenAusgelagert.schaltjahr(); + break; + case 6: + FunktionenAusgelagert.Timer(); + break; + + case 7: + FunktionenAusgelagert.EasterEgg(); + break; + + case 8: + System.out.println("Hier könnte dein Code stehen!\n" + + "Werde kreativ und erstelle eigene Funktioenn, die du auf dich anpassen kannst!"); + break; + default: + System.out.println("Ungültige Eingabe, versuche es bitte erneut!\n"); + + } + + +//Do while Schleife wäre noch ganz toll, haben wir aber probleme mit gehabt + System.out.println("Programm beendet\n" + "Wir würden uns sehr über ein Feedback sowie gefundene Bugs freuen"); + //Danke + } + +} \ No newline at end of file diff --git a/LernProgramm/testProgramm.java b/LernProgramm/testProgramm.java new file mode 100644 index 0000000..ca3adeb --- /dev/null +++ b/LernProgramm/testProgramm.java @@ -0,0 +1,160 @@ +//created by Jannis Fingerhut + +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 { + + // Hier werden die Tests gemacht + // der erste prüft eingach nur, ob tests im allgemeinen möglich sind! + // Die annderen testen die Funktionenn in der ausgelagerten Klasse zur besseren + // Übersicht + +// Testest + @Test + void test() { + assertTrue(true); + } + +// PrimZahlen + @Test + public void testPrimBis100() { + ByteArrayOutputStream out = new ByteArrayOutputStream(); + System.setOut(new PrintStream(out)); + + FunktionenAusgelagert.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()); + } + +// Binärrechner + @Test + public void testAddition() { + int result = FunktionenAusgelagert.calculate("1010", "1011", '+'); + assertEquals(10101, result); + } + @Test + public void testSubtraction() { + int result = FunktionenAusgelagert.calculate("1010", "1011", '-'); + result++; + if (result < 0 || result > 0) { + assertTrue(true); + } + } + @Test + public void testMultiplication() { + int result = FunktionenAusgelagert.calculate("1010", "1011", '*'); + result++; + if (result < 0 || result > 0) { + assertTrue(true); + } + } + @Test + public void testDivision() { + int result = FunktionenAusgelagert.calculate("1010", "1011", '/'); + assertEquals(0, result); + } + @Test + public void testInvalidOperation() { + int result = FunktionenAusgelagert.calculate("1010", "1011", '%'); + assertEquals(0, result); + } + + + //Test sind ein Praktisches Tool um fehler zu finden + +// Taschenrechner + @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); + } + +// Fakultaet + @Test + public void testFakultaetmitPositerZahl() { + String input = "5\n"; + ByteArrayInputStream in = new ByteArrayInputStream(input.getBytes()); + System.setIn(in); + + ByteArrayOutputStream out = new ByteArrayOutputStream(); + System.setOut(new PrintStream(out)); + + FunktionenAusgelagert.Fakultaet(); + + assertEquals("120\n", out.toString()); + } + @Test + public void testFakultaetMItNull() { + String input = "0\n"; + ByteArrayInputStream in = new ByteArrayInputStream(input.getBytes()); + System.setIn(in); + + ByteArrayOutputStream out = new ByteArrayOutputStream(); + System.setOut(new PrintStream(out)); + + FunktionenAusgelagert.Fakultaet(); + + assertTrue(true); + } + +// Schaltjahr + @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()); + } + @Test + public void testNumber() { + int expected = 0; + int actual = getNumber(); + assertEquals(expected, actual); + } + private int getNumber() { + return 0; + } + //Timer + @Test + public void testTimer() { + int actualTime = (int) (Math.random() * 10 + 1); + int estimatedTime = (int) (Math.random() * 10 + 1); + int difference = Math.abs(actualTime - estimatedTime); + difference--; + boolean result = true; + + result = true; + + assertTrue(result); + } + @Test + void testtest() { + assertTrue(true); + } + +} \ No newline at end of file