Browse Source

Merge branch 'JaFi' into 'main'

Ja fi

See merge request fdai7487/gruppenprojekt-programmiermethoden-und-werkzeuge!4
main cloned-at-2023-02-11
fdai7471 2 years ago
parent
commit
5a5e16692a
  1. 0
      LernProgramm/.gitkeep
  2. 235
      LernProgramm/FunktionenAusgelagert.java
  3. 62
      LernProgramm/ProgrammMain.java
  4. 160
      LernProgramm/testProgramm.java

0
LernProgramm/.gitkeep

235
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!
}

62
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
}
}

160
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);
}
}
Loading…
Cancel
Save