Erstellen
commit
e6f149e7f9
|
@ -0,0 +1,10 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<classpath>
|
||||
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-17">
|
||||
<attributes>
|
||||
<attribute name="module" value="true"/>
|
||||
</attributes>
|
||||
</classpathentry>
|
||||
<classpathentry kind="src" path="src"/>
|
||||
<classpathentry kind="output" path="bin"/>
|
||||
</classpath>
|
|
@ -0,0 +1,17 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<projectDescription>
|
||||
<name>PR1_Pflichtuebung6</name>
|
||||
<comment></comment>
|
||||
<projects>
|
||||
</projects>
|
||||
<buildSpec>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.jdt.core.javabuilder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
</buildSpec>
|
||||
<natures>
|
||||
<nature>org.eclipse.jdt.core.javanature</nature>
|
||||
</natures>
|
||||
</projectDescription>
|
|
@ -0,0 +1,2 @@
|
|||
eclipse.preferences.version=1
|
||||
encoding/<project>=UTF-8
|
|
@ -0,0 +1,14 @@
|
|||
eclipse.preferences.version=1
|
||||
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
|
||||
org.eclipse.jdt.core.compiler.codegen.targetPlatform=17
|
||||
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
|
||||
org.eclipse.jdt.core.compiler.compliance=17
|
||||
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
|
||||
org.eclipse.jdt.core.compiler.debug.localVariable=generate
|
||||
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
|
||||
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
|
||||
org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
|
||||
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
|
||||
org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
|
||||
org.eclipse.jdt.core.compiler.release=enabled
|
||||
org.eclipse.jdt.core.compiler.source=17
|
|
@ -0,0 +1 @@
|
|||
/ueb6/
|
|
@ -0,0 +1,81 @@
|
|||
package ueb6;
|
||||
|
||||
import java.awt.Point;
|
||||
|
||||
public class Packstation {
|
||||
|
||||
/**
|
||||
* Zweidimensionales Array zur Speicherung von Paketen, wobei jede Position
|
||||
* im Array ein Fach in der Packstation repräsentiert.
|
||||
*/
|
||||
public Paket[][] station;
|
||||
|
||||
/**
|
||||
* Dieser Konstruktor legt eine Packstation mit benutzerdefinierter Größe an.
|
||||
* @param breite: Die Anzahl an Fächern in der Breite der Packstation.
|
||||
* @param hoehe: Die Anzahl an Fächern in der Höhe der Packstation.
|
||||
*/
|
||||
public Packstation(int breite, int hoehe) {
|
||||
if (breite <= 0 || hoehe <= 0) {
|
||||
throw new IllegalArgumentException("Breite und Höhe müssen größer als 0 sein.");
|
||||
}
|
||||
station = new Paket[breite][hoehe];
|
||||
}
|
||||
|
||||
public Packstation() {
|
||||
station = new Paket[5][4];
|
||||
}
|
||||
|
||||
/**
|
||||
* Legt ein Paket an einer freien Stelle in der Packstation ab und gibt die
|
||||
Position zurück.
|
||||
* @param paket: Das abzulegende Paket.
|
||||
* @return Ein Point-Objekt, das die Position (Spalte, Reihe) enthält, an der das
|
||||
Paket abgelegt wurde. Die kleinste Position für ein Paket ist x=0,y=0.
|
||||
* @throws IllegalStateException Wenn kein Platz mehr in der Packstation ist.
|
||||
*/
|
||||
public Point legePaketAb(Paket paket) throws IllegalStateException {
|
||||
throw new IllegalStateException("Kein Platz mehr in der Packstation.");
|
||||
}
|
||||
|
||||
/**
|
||||
* Zählt die Anzahl der freien Boxen in der Packstation.
|
||||
* @return Die Anzahl der freien Boxen als ganze Zahl.
|
||||
*/
|
||||
public int zaehleFreieBoxen() {
|
||||
int count = 0;
|
||||
|
||||
for(int i = 0; i < station.length; i++) {
|
||||
for(int j = 0; j < station[0].length; j++) {
|
||||
if (station[i][j] == null)
|
||||
count++;
|
||||
}
|
||||
}
|
||||
return count;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Liefert Informationen über den Empfänger und die Adresse des Pakets, das an der
|
||||
angegebenen Position abgelegt ist,
|
||||
* sofern die Box belegt ist. Andernfalls wird die Information zurückgegeben, dass
|
||||
die Box leer ist.
|
||||
* Falls die angegebene Box nicht existiert, wird eine IllegalArgumentException
|
||||
Exception geworfen.
|
||||
* @param spalte: Die Spalte der Box in der Packstation (beginnend bei 0).
|
||||
* @param reihe: Die Reihe der Box in der Packstation (beginnend bei 0) .
|
||||
* @return Ein String mit Informationen über den Empfänger und die Adresse des
|
||||
Pakets oder die Nachricht "Die Box ist leer".
|
||||
* @throws IllegalArgumentException Wenn die angegebene Box nicht existiert.
|
||||
*/
|
||||
public String informationZumBoxenplatz(int spalte, int reihe) throws IllegalArgumentException {
|
||||
|
||||
String empfaenger = station[spalte][reihe].getEmpfaenger();
|
||||
String anschrift = station[spalte][reihe].getAnschrift();
|
||||
if (empfaenger == null && anschrift == null) {
|
||||
throw new IllegalArgumentException("Die angegebene Box existiert nicht.");
|
||||
}
|
||||
|
||||
return empfaenger + "\n" + anschrift;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,24 @@
|
|||
package ueb6;
|
||||
|
||||
public class Paket {
|
||||
|
||||
public String name;
|
||||
public String adress;
|
||||
|
||||
public Paket (String empfaenger, String adresse) {
|
||||
name = empfaenger;
|
||||
adress = adresse;
|
||||
}
|
||||
|
||||
public String getAnschrift() {
|
||||
return adress;
|
||||
}
|
||||
|
||||
public String getEmpfaenger() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public String toString() {
|
||||
return name + "\n" + adress;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,182 @@
|
|||
package ueb6;
|
||||
import java.util.Scanner;
|
||||
|
||||
public class Rechner {
|
||||
public static void main(String[] args) {
|
||||
String eingabe;
|
||||
int ergebnis;
|
||||
char c;
|
||||
|
||||
while (true) {
|
||||
Scanner input = new Scanner(System.in);
|
||||
System.out.println("Welche Rechenart soll ausgeführt werden?");
|
||||
System.out.println("[ Multiplikation | Division | Exponent | Fakultät ]");
|
||||
System.out.println("[ m | d | e | f ]");
|
||||
System.out.print("Geben Sie das zugehörige Zeichen ein: ");
|
||||
|
||||
eingabe = input.nextLine();
|
||||
|
||||
ergebnis = 0;
|
||||
|
||||
if (eingabe.length() == 1) {
|
||||
c = eingabe.charAt(0);
|
||||
ergebnis = berechnung(c);
|
||||
} else {
|
||||
System.out.println("Fehler! Bitte nur eins der angegebenen Buchstaben eingeben!");
|
||||
}
|
||||
System.out.println("Ergebnis der gewählten Berechnung: " + ergebnis);
|
||||
System.out.println();
|
||||
input.close();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Führt die ausgewählte Berechnung basierend auf dem übergebenen Zeichen aus.
|
||||
* @param c Das Zeichen, das die gewünschte Berechnung angibt
|
||||
* ('m' für Multiplikation, 'd' für Division, 'e' für Exponentialfunktion, 'f' für
|
||||
* Fakultät)
|
||||
* @return Das Ergebnis der Berechnung oder -1 bei fehlerhafter Eingabe
|
||||
*/
|
||||
public static int berechnung(char c) {
|
||||
int ergebnis = 0;
|
||||
Scanner zahl = new Scanner(System.in);
|
||||
|
||||
if (c == 'm') {
|
||||
try {
|
||||
System.out.print("Erster Faktor: ");
|
||||
int faktor1 = zahl.nextInt();
|
||||
System.out.print("Zweiter Faktor: ");
|
||||
int faktor2 = zahl.nextInt();
|
||||
ergebnis = multiplizieren(faktor1, faktor2);
|
||||
} catch (IllegalArgumentException e) {
|
||||
System.out.println("Fehler! Keine der Zahlen darf negativ sein!");
|
||||
ergebnis = -1;
|
||||
}
|
||||
} else if (c == 'd') {
|
||||
try {
|
||||
System.out.print("Dividend: ");
|
||||
int dividend = zahl.nextInt();
|
||||
System.out.print("Divisor: ");
|
||||
int divisor = zahl.nextInt();
|
||||
ergebnis = dividieren(dividend, divisor);
|
||||
} catch (IllegalArgumentException e) {
|
||||
System.out.println("Fehler! Keine der Zahlen darf negativ sein!");
|
||||
ergebnis = -1;
|
||||
} catch (ArithmeticException e) {
|
||||
System.out.println("Fehler! Der Divisor darf nicht 0 sein!");
|
||||
ergebnis = -1;
|
||||
}
|
||||
} else if (c == 'e') {
|
||||
try {
|
||||
System.out.print("Grundwert: ");
|
||||
int grundwert = zahl.nextInt();
|
||||
System.out.print("Exponent: ");
|
||||
int exponent = zahl.nextInt();
|
||||
ergebnis = exponent(grundwert, exponent);
|
||||
} catch (IllegalArgumentException e) {
|
||||
System.out.println("Fehler! Keine der Zahlen darf negativ sein!");
|
||||
ergebnis = -1;
|
||||
}
|
||||
} else if (c == 'f') {
|
||||
try {
|
||||
System.out.print("Zahl: ");
|
||||
int n = zahl.nextInt();
|
||||
ergebnis = fakultaet(n);
|
||||
} catch (IllegalArgumentException e) {
|
||||
System.out.println("Fehler! Die Zahl darf nicht negativ sein!");
|
||||
ergebnis = -1;
|
||||
}
|
||||
} else {
|
||||
ergebnis = -1;
|
||||
}
|
||||
zahl.close();
|
||||
return ergebnis;
|
||||
}
|
||||
|
||||
/**
|
||||
* Berechnet rekursiv das Produkt von zwei ganzen positiven Zahlen.
|
||||
* @param faktor1 Der erste Faktor
|
||||
* @param faktor2 Der zweite Faktor
|
||||
* @return Das Produkt der beiden Faktoren
|
||||
* @throws IllegalArgumentException Wenn einer der Faktoren negativ ist
|
||||
*/
|
||||
public static int multiplizieren(int faktor1, int faktor2) throws IllegalArgumentException {
|
||||
if(faktor1 < 0 || faktor2 < 0)
|
||||
throw new IllegalArgumentException();
|
||||
if(faktor1 == 1)
|
||||
return faktor2;
|
||||
else if(faktor2 == 1)
|
||||
return faktor1;
|
||||
else {
|
||||
return multiplizieren(faktor1, faktor2-1) + faktor1;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Berechnet rekursiv den Quotienten von zwei ganzen positiven Zahlen.
|
||||
* @param dividend Der Dividend
|
||||
* @param divisor Der Divisor
|
||||
* @return Der Quotient der beiden Zahlen
|
||||
* @throws IllegalArgumentException Wenn einer der Werte negativ ist
|
||||
* @throws ArithmeticException Wenn der Divisor 0 ist
|
||||
* */
|
||||
public static int dividieren(int divident, int divisor) throws IllegalArgumentException, ArithmeticException {
|
||||
int ergebnis = 0;
|
||||
|
||||
if(divident < 0 || divisor < 0)
|
||||
throw new IllegalArgumentException();
|
||||
if (divisor == 0)
|
||||
throw new ArithmeticException();
|
||||
if(divisor == 1)
|
||||
return divident;
|
||||
else if (divisor > divident)
|
||||
return 0;
|
||||
else if (divident == divisor)
|
||||
return 1;
|
||||
else {
|
||||
while(divident >= divisor) {
|
||||
divident -= divisor;
|
||||
ergebnis += 1;
|
||||
}
|
||||
return ergebnis;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Berechnet rekursiv die Potenz, mit gegebenem positiven ganzen Grundwert und
|
||||
* Exponenten.
|
||||
* @param grundwert Die Basis
|
||||
* @param exponent Der Exponent der Basis
|
||||
* @return Das Ergebnis der Potenzierung
|
||||
* @throws IllegalArgumentException Wenn einer der Werte negativ ist
|
||||
*/
|
||||
public static int exponent(int grundwert, int exponent) {
|
||||
if(grundwert < 0 || exponent < 0)
|
||||
throw new IllegalArgumentException();
|
||||
if (exponent == 0)
|
||||
return 1;
|
||||
if(grundwert == 1)
|
||||
return grundwert;
|
||||
else if(exponent == 1)
|
||||
return grundwert;
|
||||
else {
|
||||
return exponent(grundwert, exponent-1) * grundwert;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Berechnet rekursiv die Fakultät einer ganzen positiven Zahl.
|
||||
* @param n Die Zahl, deren Fakultät berechnet werden soll
|
||||
* @return Die Fakultät der Zahl
|
||||
* @throws IllegalArgumentException Wenn die Zahl negativ ist
|
||||
*/
|
||||
public static int fakultaet(int n) throws IllegalArgumentException {
|
||||
if (n < 0)
|
||||
throw new IllegalArgumentException();
|
||||
if (n == 0 || n == 1)
|
||||
return 1;
|
||||
else {
|
||||
return fakultaet(n-1) * n;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,42 @@
|
|||
package ueb6;
|
||||
|
||||
public class TestPacket {
|
||||
|
||||
public static void main(String[] args) {
|
||||
Paket Fry = new Paket("Philip J. Fry", "Frystreet 1\nNew New York\nUSA");
|
||||
Paket Leela = new Paket("Turanga Leela", "Lilaweg 69\nNew New York\nUSA");
|
||||
Paket Bender = new Paket("Bender Rodriguez", "Biegeallee 420\nTijuana\nMexico");
|
||||
|
||||
Packstation Test = new Packstation(2, 2);
|
||||
|
||||
|
||||
System.out.println("Empfänger des 1. Pakets ist: " + Fry.getEmpfaenger());
|
||||
System.out.println("Adresse des 1. Pakets ist: " + Fry.getAnschrift());
|
||||
System.out.println("Empfänger des 2. Pakets ist: " + Leela.getEmpfaenger());
|
||||
System.out.println("Adresse des 2. Pakets ist: " + Leela.getAnschrift());
|
||||
System.out.println("Empfänger des 3. Pakets ist: " + Bender.getEmpfaenger());
|
||||
System.out.println("Adresse des 3. Pakets ist: " + Bender.getAnschrift());
|
||||
System.out.println();
|
||||
System.out.println(Fry.toString());
|
||||
System.out.println();
|
||||
System.out.println(Leela.toString());
|
||||
System.out.println();
|
||||
System.out.println(Bender.toString());
|
||||
System.out.println();
|
||||
|
||||
try {
|
||||
Test.legePaketAb(Fry);
|
||||
} catch (IllegalStateException e) {
|
||||
System.out.println("Es existiert keine freier Platz mehr.");
|
||||
}
|
||||
int freiePlaetze = Test.zaehleFreieBoxen();
|
||||
System.out.println("Es gibt " + freiePlaetze + " freie Plätze.");
|
||||
System.out.println();
|
||||
try {
|
||||
String info = Test.informationZumBoxenplatz(1, 1);
|
||||
System.out.println("Empfängerinformationen für Platz: " + info);
|
||||
} catch (IllegalArgumentException e) {
|
||||
System.out.println("Die angegebene Box existiert nicht.");
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue