Browse Source
Merge branch 'JaFi' into 'main'
Merge branch 'JaFi' into 'main'
Ja fi See merge request fdai7487/gruppenprojekt-programmiermethoden-und-werkzeuge!4main cloned-at-2023-02-11
fdai7471
2 years ago
4 changed files with 457 additions and 0 deletions
-
0LernProgramm/.gitkeep
-
235LernProgramm/FunktionenAusgelagert.java
-
62LernProgramm/ProgrammMain.java
-
160LernProgramm/testProgramm.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! |
||||
|
} |
@ -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 |
||||
|
} |
||||
|
|
||||
|
} |
@ -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); |
||||
|
} |
||||
|
|
||||
|
} |
Write
Preview
Loading…
Cancel
Save
Reference in new issue