generated from hummel/Bank-System
96 lines
2.2 KiB
Java
96 lines
2.2 KiB
Java
package tpe.exceptions.roboter;
|
|
|
|
import java.util.Arrays;
|
|
import java.util.stream.Collectors;
|
|
|
|
import tpe.exceptions.RobotException;
|
|
import tpe.exceptions.RobotIllegalStateException;
|
|
import tpe.exceptions.RobotMagicValueException;
|
|
|
|
public abstract class Robots implements Robot {
|
|
protected String name;
|
|
protected RobotException error;
|
|
protected boolean powerStatus;
|
|
|
|
@Override
|
|
public String toString() {
|
|
return "Robots [name=" + name + ", Id=" + getId() + "]";
|
|
}
|
|
|
|
/**
|
|
* Legt fest das ein Roboter standardmäßig einen Namen hat und setzt den Power
|
|
* Knopf bei Erstellung auf aus
|
|
*
|
|
* @param name
|
|
*/
|
|
public Robots(String name) {
|
|
this.name = name;
|
|
this.powerStatus = false;
|
|
}
|
|
|
|
@Override
|
|
public abstract int getId();
|
|
|
|
@Override
|
|
public String getName() {
|
|
return name;
|
|
}
|
|
|
|
@Override
|
|
public void triggerPowerSwitch() {
|
|
if (powerStatus == false)
|
|
powerStatus = true;
|
|
else
|
|
powerStatus = false;
|
|
|
|
}
|
|
|
|
@Override
|
|
public boolean isPowerOn() {
|
|
|
|
return powerStatus;
|
|
}
|
|
|
|
@Override
|
|
public RobotException getLastException() {
|
|
return error;
|
|
}
|
|
|
|
public boolean checkRobotMagicValueException(int[] zahlen) {
|
|
boolean error = false;
|
|
for (int i = 0; i < zahlen.length; i++) {
|
|
if (zahlen[i] == 42) {
|
|
error = true;
|
|
}
|
|
}
|
|
return error;
|
|
}
|
|
|
|
/**
|
|
* Unterscheidung der Ausgabe durch die Art der Sortierung: <br>
|
|
* R2D2: sortiert aufsteigend Wert an der Stelle 0 des Arrays ist kleiner als an
|
|
* der letzten Stelle <br>
|
|
* C3PO: sortiert absteigend Wert an der Stelle 0 des Arrays ist größer als an
|
|
* der letzten Stelle
|
|
*/
|
|
public String speak(int[] zahlen) throws RobotException {
|
|
|
|
if (powerStatus == false) {
|
|
|
|
error = new RobotIllegalStateException("Der Roboter ist ausgeschaltet!", this.getName());
|
|
throw error;
|
|
} else if (checkRobotMagicValueException(zahlen) == true) {
|
|
error = new RobotMagicValueException("Zahl 42 kann nicht verarbeitet werden!", this.getName());
|
|
throw error;
|
|
} else if (zahlen[0] < zahlen[zahlen.length - 1]) {
|
|
return Arrays.stream(zahlen).mapToObj(String::valueOf).collect(Collectors.joining(", "));
|
|
} else {
|
|
return Arrays.stream(zahlen).mapToObj(String::valueOf).collect(Collectors.joining("; "));
|
|
}
|
|
|
|
}
|
|
|
|
@Override
|
|
public abstract int[] think(int[] zahlen) throws RobotException;
|
|
}
|