package tpe.exceptions.roboter; //import java.util.*; import tpe.exceptions.RobotException; import tpe.exceptions.RobotIllegalStateException; import tpe.exceptions.RobotMagicValueException; public class C3PO extends Robots{ RobotType robotType; // private RobotException lastException; // private String name; // private boolean powerSwitch; private int id; StringBuilder sb = new StringBuilder(); public C3PO(String name, int id) { super(name); this.id = id; this.name = name; robotType = RobotType.C3PO; } @Override public String speak(int[] zahlen) throws RobotException { for (int i = 0; i < zahlen.length; i++) { sb.append(zahlen[i]); if (i < zahlen.length - 1) { sb.append(", "); } } String output = sb.toString(); return output; } @Override public int[] think(int[] zahlen) throws RobotIllegalStateException, RobotMagicValueException { if(!isPowerOn()) { throw new RobotIllegalStateException("Der Roboter ist ausgeschaltet!", this.getName()); } else if(checkRobotMagicValueException(zahlen)==true) { throw new RobotMagicValueException("Zahl 42 kann nicht verarbeitet werden!",this.getName()); } else { int z; for (int i = 1; i < zahlen.length; i++) { z = zahlen[i]; int k = i; /** * hier wird die Zahl solange nach links getauscht bis die Zahl links nicht mehr kleiner * ist als die Zahl rechts, oder die Zahl ganz links ist. */ while (k > 0 && zahlen[k - 1] < z) { zahlen[k] = zahlen[k - 1]; k--; } zahlen[k] = z; } } return zahlen; } public RobotType getRobotType() { return this.robotType; } @Override public int getId() { return id; } }