Hallo
This commit is contained in:
parent
4863c9d8f0
commit
ec38213982
87
src/Bot/Bot.java
Normal file
87
src/Bot/Bot.java
Normal file
@ -0,0 +1,87 @@
|
||||
package Bot;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.InputStreamReader;
|
||||
import java.io.IOException;
|
||||
import java.io.OutputStream;
|
||||
import java.net.Socket;
|
||||
import java.net.InetSocketAddress;
|
||||
|
||||
public abstract class Bot {
|
||||
|
||||
// Ein Bot ist ein Programm, das sich mit einem Server verbindet und
|
||||
// mit diesem kommuniziert. Der Server sendet dem Bot eine Zeichenkette,
|
||||
// die das Spielfeld repräsentiert. Der Bot sendet dem Server ein Zeichen,
|
||||
// das die nächste Bewegung des Bots repräsentiert.
|
||||
|
||||
|
||||
private final String host; // Hostname oder IP-Adresse des Servers
|
||||
private final int port; // Port des Servers
|
||||
|
||||
protected Bot(String[] args) {
|
||||
host = args.length > 0 ? args[0] : "localhost";
|
||||
port = args.length > 1 ? Integer.parseInt(args[1]) : 63187;
|
||||
}
|
||||
|
||||
// Diese Methode stellt die Verbindung zum Server her und startet die
|
||||
// Kommunikation mit dem Server. Die Methode wird von der main-Methode
|
||||
// aufgerufen.
|
||||
protected void run() {
|
||||
try (Socket socket = new Socket()) {
|
||||
socket.connect(new InetSocketAddress(host, port));
|
||||
OutputStream out = socket.getOutputStream();
|
||||
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
|
||||
View view = new View();
|
||||
while (true) {
|
||||
view.read(in);
|
||||
view.print();
|
||||
try {
|
||||
char ch = nextMove(view);
|
||||
out.write(ch);
|
||||
}
|
||||
catch (Exception e) { break; }
|
||||
}
|
||||
socket.close();
|
||||
} catch (IOException e) {
|
||||
System.err.println("Error: " + e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
// Diese Methode ermittelt den nächsten Zug des Bots. Sie wird von der
|
||||
// run-Methode aufgerufen, nachdem der Server das Spielfeld gesendet hat.
|
||||
// Subklassen müssen diese Methode implementieren.
|
||||
abstract protected char nextMove(View view) throws Exception;
|
||||
|
||||
// Diese Klasse repräsentiert das Spielfeld. Sie wird von der run-Methode
|
||||
// verwendet, um das Spielfeld zu lesen und auszugeben.
|
||||
// Subklassen können diese Klasse verwenden, um das Spielfeld zu analysieren.
|
||||
public static class View {
|
||||
protected String data;
|
||||
protected int width;
|
||||
|
||||
// Diese Methode liest das Spielfeld vom Server.
|
||||
private void read(BufferedReader in) throws IOException {
|
||||
StringBuilder sb = new StringBuilder();
|
||||
data = in.readLine();
|
||||
if (data == null) {
|
||||
return;
|
||||
}
|
||||
sb.append(data);
|
||||
width = data.length();
|
||||
for (int i = 1; i < width; ++i) {
|
||||
sb.append(in.readLine());
|
||||
}
|
||||
data = sb.toString();
|
||||
}
|
||||
|
||||
// Diese Methode gibt das Spielfeld aus.
|
||||
protected void print() {
|
||||
if (data == null || width < 1) {
|
||||
return;
|
||||
}
|
||||
for (int i = 0, len = data.length(); i < len; i += width) {
|
||||
System.out.println(data.substring(i, i + width));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
90
src/Bot/EscapeBot.java
Normal file
90
src/Bot/EscapeBot.java
Normal file
@ -0,0 +1,90 @@
|
||||
package Bot;
|
||||
import java.io.IOException;
|
||||
|
||||
public class EscapeBot extends Bot {
|
||||
|
||||
private boolean rocketFound = false;
|
||||
private int counter=0;
|
||||
|
||||
|
||||
public EscapeBot(String[] args) {
|
||||
super(args);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected char nextMove(View view) throws IOException {
|
||||
counter++;
|
||||
System.out.println(counter);
|
||||
if (view.data.contains("o")) {
|
||||
System.out.println("rocket found");
|
||||
|
||||
return moveToRocket(view);
|
||||
}else {
|
||||
return findRocket();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
// Wenn die Rakete nicht gefunden wurde oder bereits gefunden wurde,
|
||||
// mache einen zufälligen Schritt.
|
||||
|
||||
|
||||
|
||||
private char findRocket(){
|
||||
if(counter==1||counter==6||counter==11||counter==21||counter==31||counter==46||counter==61||counter==81||counter==101||counter==126||counter==151||counter==181||counter==211||counter==246||counter==271){
|
||||
System.out.println("ich dreh mich");
|
||||
|
||||
return '>';
|
||||
|
||||
}
|
||||
System.out.println("ich geh gerade aus");
|
||||
return '^';
|
||||
}
|
||||
private char moveToRocket(View view) {
|
||||
int zeroIndex = view.data.indexOf("o");
|
||||
|
||||
// Berechne die x- und y-Koordinaten der "0" im Sichtfeld
|
||||
int zeroX = zeroIndex % view.width;
|
||||
int zeroY = zeroIndex / view.width;
|
||||
|
||||
// Berechne die x- und y-Koordinaten der aktuellen Position des Bots
|
||||
int botX = view.width / 2;
|
||||
int botY = view.width / 2;
|
||||
System.out.println(zeroX);
|
||||
System.out.println(zeroY);
|
||||
System.out.println(botX);
|
||||
System.out.println(botY);
|
||||
|
||||
if(zeroY<botY){
|
||||
System.out.println("ich suche das ziehl");
|
||||
return '^';
|
||||
|
||||
}else if(zeroY>botY){
|
||||
return'v';
|
||||
}else if(zeroY==botY){
|
||||
if(zeroX<botX){
|
||||
System.out.println("suche:Ich dreh mich nach links ");
|
||||
return '<';
|
||||
}else {
|
||||
System.out.println("ziel:ich dreh mich nach rechts");
|
||||
return '>';
|
||||
}
|
||||
}else
|
||||
return 'q';
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
public static void main(String[] args) {
|
||||
EscapeBot escapeBot = new EscapeBot(args);
|
||||
escapeBot.run();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
46
src/Bot/ManualBot.java
Normal file
46
src/Bot/ManualBot.java
Normal file
@ -0,0 +1,46 @@
|
||||
package Bot;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.Scanner;
|
||||
|
||||
|
||||
public class ManualBot extends Bot {
|
||||
|
||||
public ManualBot(String[] args) {
|
||||
super(args);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected char nextMove(View view) throws IOException {
|
||||
System.out.println(" (w: Forward, s: Backward, a: Left, d: Right, q: Quit): ");
|
||||
Scanner scan= new Scanner(System.in);
|
||||
//BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
|
||||
// String input = reader.readLine().trim();
|
||||
|
||||
String command = scan.nextLine();
|
||||
|
||||
switch (command) {
|
||||
case "w":
|
||||
return '^';
|
||||
case "s":
|
||||
return 'v';
|
||||
case "a":
|
||||
return '<';
|
||||
case "d":
|
||||
return '>';
|
||||
case "q":
|
||||
System.out.println("Connection terminated by user.");
|
||||
throw new IOException("Connection terminated by user.");
|
||||
default:
|
||||
System.out.println("Invalid command. Try again.");
|
||||
|
||||
}
|
||||
return 'q';
|
||||
}
|
||||
|
||||
|
||||
public static void main(String[] args) {
|
||||
ManualBot manualBot = new ManualBot(args);
|
||||
manualBot.run();
|
||||
}
|
||||
}
|
46
src/Bot/Rumblebot.java
Normal file
46
src/Bot/Rumblebot.java
Normal file
@ -0,0 +1,46 @@
|
||||
package Bot;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.Scanner;
|
||||
|
||||
|
||||
public class Rumblebot extends Bot {
|
||||
|
||||
public Rumblebot(String[] args) {
|
||||
super(args);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected char nextMove(View view) throws IOException {
|
||||
System.out.println(" (w: Forward, s: Backward, a: Left, d: Right, q: Quit): ");
|
||||
Scanner scan= new Scanner(System.in);
|
||||
//BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
|
||||
// String input = reader.readLine().trim();
|
||||
|
||||
String command = scan.nextLine();
|
||||
|
||||
switch (command) {
|
||||
case "w":
|
||||
return '^';
|
||||
case "s":
|
||||
return 'v';
|
||||
case "a":
|
||||
return '<';
|
||||
case "d":
|
||||
return '>';
|
||||
case "q":
|
||||
System.out.println("Connection terminated by user.");
|
||||
throw new IOException("Connection terminated by user.");
|
||||
default:
|
||||
System.out.println("Invalid command. Try again.");
|
||||
|
||||
}
|
||||
return 'q';
|
||||
}
|
||||
|
||||
|
||||
public static void main(String[] args) {
|
||||
Rumblebot rumblebot = new Rumblebot(args);
|
||||
rumblebot.run();
|
||||
}
|
||||
}
|
143
src/Bot/SnakeBot.java
Normal file
143
src/Bot/SnakeBot.java
Normal file
@ -0,0 +1,143 @@
|
||||
package Bot;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Scanner;
|
||||
|
||||
|
||||
public class SnakeBot extends Bot {
|
||||
|
||||
public SnakeBot(String[] args) {
|
||||
super(args);
|
||||
}
|
||||
|
||||
int counter=0;
|
||||
|
||||
@Override
|
||||
protected char nextMove(View view) throws IOException {
|
||||
int wagenIndex = view.data.indexOf("*");
|
||||
|
||||
// Berechne die x- und y-Koordinaten der "0" im Sichtfeld
|
||||
int wagenX = wagenIndex % view.width;
|
||||
int wagenY = wagenIndex / view.width;
|
||||
//Berechen die x- und y-Koordinate der @ im Sichtfeld
|
||||
|
||||
|
||||
// Berechne die x- und y-Koordinaten der aktuellen Position des Bots
|
||||
int botX = view.width / 2;
|
||||
int botY = view.width / 2;
|
||||
|
||||
System.out.println("wagen"+wagenX+" ,"+wagenY);
|
||||
System.out.println("bot"+botX+", "+botY);
|
||||
if((wagenY+1)==botY){
|
||||
System.out.println("ich dreh mich ");
|
||||
return '>';
|
||||
}else {
|
||||
return search(view);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private char search(View view){
|
||||
|
||||
|
||||
if(view.data.contains("@")){
|
||||
return moveToRocket(view);
|
||||
}
|
||||
else {
|
||||
System.out.println("ich laufe");
|
||||
counter++;
|
||||
if(counter>40){
|
||||
counter=0;
|
||||
return '>';
|
||||
}
|
||||
return '^';
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private char moveToRocket(View view) {
|
||||
|
||||
int wagenIndex = view.data.indexOf("*");
|
||||
|
||||
// Berechne die x- und y-Koordinaten der "0" im Sichtfeld
|
||||
int wagenX = wagenIndex % view.width;
|
||||
int wagenY = wagenIndex / view.width;
|
||||
|
||||
|
||||
int botX = view.width / 2;
|
||||
int botY = view.width / 2;
|
||||
|
||||
// Finde alle '@'-Symbole im Sichtfeld
|
||||
List<Integer> targetIndices = new ArrayList<>();
|
||||
for (int i = 0; i < view.data.length(); i++) {
|
||||
if (view.data.charAt(i) == '@') {
|
||||
targetIndices.add(i);
|
||||
}
|
||||
}
|
||||
|
||||
if (targetIndices.isEmpty()) {
|
||||
// Keine Ziele vorhanden, laufe weiter
|
||||
System.out.println("Ich laufe weiter");
|
||||
return '^';
|
||||
}
|
||||
|
||||
// Finde das am nächsten liegende Ziel
|
||||
int nearestTargetIndex = findNearestTarget(botX, botY, targetIndices, view.width);
|
||||
|
||||
// Berechne die x- und y-Koordinaten des nächsten Ziels
|
||||
int targetX = nearestTargetIndex % view.width;
|
||||
int targetY = nearestTargetIndex / view.width;
|
||||
|
||||
// Bewege dich in Richtung des nächsten Ziels
|
||||
if (targetY < botY) {
|
||||
System.out.println("Ich bewege mich nach oben");
|
||||
return '^';
|
||||
} else if (targetY > botY) {
|
||||
if((wagenY+1)==botY){
|
||||
System.out.println("ich dreh mich ");
|
||||
return '>';
|
||||
}else {
|
||||
|
||||
|
||||
System.out.println("Ich bewege mich nach unten");
|
||||
return 'v';}
|
||||
} else {
|
||||
if (targetX < botX) {
|
||||
System.out.println("Ich drehe mich nach links");
|
||||
return '<';
|
||||
} else if (targetX > botX) {
|
||||
System.out.println("Ich drehe mich nach rechts");
|
||||
return '>';
|
||||
}
|
||||
}
|
||||
|
||||
// Default-Rückgabewert, sollte nicht erreicht werden
|
||||
return 'q';
|
||||
}
|
||||
|
||||
private int findNearestTarget(int botX, int botY, List<Integer> targetIndices, int width) {
|
||||
int nearestTargetIndex = -1;
|
||||
int minDistance = Integer.MAX_VALUE;
|
||||
|
||||
for (int targetIndex : targetIndices) {
|
||||
int targetX = targetIndex % width;
|
||||
int targetY = targetIndex / width;
|
||||
|
||||
int distance = Math.abs(targetX - botX) + Math.abs(targetY - botY);
|
||||
|
||||
if (distance < minDistance) {
|
||||
minDistance = distance;
|
||||
nearestTargetIndex = targetIndex;
|
||||
}
|
||||
}
|
||||
|
||||
return nearestTargetIndex;
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
SnakeBot snakebot= new SnakeBot(args);
|
||||
snakebot.run();
|
||||
}
|
||||
}
|
8
src/HelloWorld/ErrorWriter.java
Normal file
8
src/HelloWorld/ErrorWriter.java
Normal file
@ -0,0 +1,8 @@
|
||||
package HelloWorld;
|
||||
|
||||
public class ErrorWriter implements IHelloWorldWriter {
|
||||
@Override
|
||||
public void writeHelloWorld(){
|
||||
System.err.println("Hello World");
|
||||
}
|
||||
}
|
24
src/HelloWorld/Executor.java
Normal file
24
src/HelloWorld/Executor.java
Normal file
@ -0,0 +1,24 @@
|
||||
package HelloWorld;
|
||||
|
||||
public class Executor{
|
||||
|
||||
|
||||
|
||||
public static void main(String[] args) {
|
||||
|
||||
printwriteHelloWorld(new OutWriter(), new ErrorWriter(), true);
|
||||
printwriteHelloWorld(new OutWriter(), new ErrorWriter(), false);
|
||||
}
|
||||
|
||||
public static void printwriteHelloWorld(IHelloWorldWriter writer1, IHelloWorldWriter writer2, boolean second) {
|
||||
|
||||
|
||||
if(second){
|
||||
writer2.writeHelloWorld();
|
||||
}else {
|
||||
writer1.writeHelloWorld();
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
9
src/HelloWorld/IHelloWorldWriter.java
Normal file
9
src/HelloWorld/IHelloWorldWriter.java
Normal file
@ -0,0 +1,9 @@
|
||||
package HelloWorld;
|
||||
|
||||
|
||||
public interface IHelloWorldWriter {
|
||||
|
||||
void writeHelloWorld();
|
||||
}
|
||||
|
||||
|
9
src/HelloWorld/OutWriter.java
Normal file
9
src/HelloWorld/OutWriter.java
Normal file
@ -0,0 +1,9 @@
|
||||
package HelloWorld;
|
||||
|
||||
public class OutWriter implements IHelloWorldWriter {
|
||||
@Override
|
||||
public void writeHelloWorld(){
|
||||
System.out.println("Hello Wolrd");
|
||||
}
|
||||
|
||||
}
|
@ -1,4 +1,4 @@
|
||||
package Praktikum1;
|
||||
package praktikum1;
|
||||
|
||||
public class Teilerdurch5 {
|
||||
|
||||
|
@ -1,6 +1,5 @@
|
||||
package Praktikum1;
|
||||
package praktikum1;
|
||||
|
||||
import java.util.Scanner;
|
||||
|
||||
public class Zahlenfilter {
|
||||
public static void main(String[] args) {
|
||||
|
0
src/Praktikum4/BetterPhilospher.java
Normal file
0
src/Praktikum4/BetterPhilospher.java
Normal file
45
src/Praktikum4/Fork.java
Normal file
45
src/Praktikum4/Fork.java
Normal file
@ -0,0 +1,45 @@
|
||||
package Praktikum4;
|
||||
|
||||
public class Fork {
|
||||
|
||||
private boolean inUse=false;
|
||||
private final int id;
|
||||
|
||||
public Fork(int id){
|
||||
this.id=id;
|
||||
}
|
||||
|
||||
public int getId(){
|
||||
return id;
|
||||
}
|
||||
|
||||
|
||||
public boolean take(){
|
||||
try {
|
||||
//kurz warten
|
||||
Thread.sleep(1000);
|
||||
} catch (InterruptedException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
synchronized (this) {
|
||||
if (!inUse) {
|
||||
inUse=true;
|
||||
return true;
|
||||
} else {
|
||||
//System.out.println("Keine Gabel frei");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void put(){
|
||||
synchronized (this) {
|
||||
inUse = false;
|
||||
}
|
||||
}
|
||||
|
||||
public boolean isInUse() {
|
||||
return inUse;
|
||||
}
|
||||
}
|
59
src/Praktikum4/Philosopher.java
Normal file
59
src/Praktikum4/Philosopher.java
Normal file
@ -0,0 +1,59 @@
|
||||
package Praktikum4;
|
||||
|
||||
import java.util.concurrent.Semaphore;
|
||||
|
||||
class Philosopher implements Runnable{
|
||||
|
||||
protected int id;
|
||||
protected final Fork left;
|
||||
protected final Fork right;
|
||||
|
||||
public Philosopher(int id,Fork left,Fork rigth){
|
||||
this.id=id;
|
||||
this.left=left;
|
||||
this.right=rigth;
|
||||
}
|
||||
private void tryToGetFork(Fork fork, String forkType) {
|
||||
|
||||
System.out.println("Philosopher " + id + " is trying to get " + forkType + " fork " + fork.getId());
|
||||
while (!fork.take()) {
|
||||
Thread.yield(); // Busy wait, um die CPU zu entlasten
|
||||
}
|
||||
System.out.println("Philosopher " + id + " got " + forkType + " fork " + fork.getId());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
try {
|
||||
Fork firstFork;
|
||||
Fork secondFork;
|
||||
|
||||
if (left.getId() < right.getId()) {
|
||||
firstFork = left;
|
||||
secondFork = right;
|
||||
} else {
|
||||
firstFork = right;
|
||||
secondFork = left;
|
||||
}
|
||||
|
||||
|
||||
tryToGetFork(firstFork, "first");
|
||||
|
||||
|
||||
tryToGetFork(secondFork, "second");
|
||||
System.out.println("Philosopher " + id + " is eating");
|
||||
|
||||
|
||||
Thread.sleep(2000);
|
||||
|
||||
|
||||
left.put();
|
||||
right.put();
|
||||
|
||||
|
||||
System.out.println("Philosopher " + id + " finished eating");
|
||||
} catch (InterruptedException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
58
src/Praktikum4/SorterClient.java
Normal file
58
src/Praktikum4/SorterClient.java
Normal file
@ -0,0 +1,58 @@
|
||||
package Praktikum4;
|
||||
|
||||
import java.io.*;
|
||||
import java.net.InetSocketAddress;
|
||||
import java.net.ServerSocket;
|
||||
import java.net.Socket;
|
||||
import java.util.Scanner;
|
||||
|
||||
public class SorterClient {
|
||||
|
||||
public static void main(String[] args) {
|
||||
SorterClient client = new SorterClient();
|
||||
client.run();
|
||||
}
|
||||
|
||||
private void run() {
|
||||
Scanner scanner = new Scanner(System.in);
|
||||
while (scanner.hasNextLine()) {
|
||||
String line = scanner.nextLine();
|
||||
if (line.isEmpty())
|
||||
break;
|
||||
line = sort(line);
|
||||
System.out.println(line);
|
||||
}
|
||||
scanner.close();
|
||||
}
|
||||
|
||||
private static final String SERVER_ADDRESS = "localhost";
|
||||
private static final int SERVER_PORT = 12345;
|
||||
|
||||
private String sort(String line)
|
||||
{
|
||||
|
||||
InetSocketAddress adress = new InetSocketAddress(SERVER_ADDRESS, SERVER_PORT);
|
||||
try ( Socket socket = new Socket()) {
|
||||
socket.connect(adress);
|
||||
sendLine(socket, line);
|
||||
String answer = receiveLine(socket);
|
||||
return answer;
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
return "Error: Unable to communicate with the server.";
|
||||
}
|
||||
}
|
||||
|
||||
public static String receiveLine(Socket socket) throws IOException {
|
||||
InputStream in = socket.getInputStream();
|
||||
BufferedReader reader = new BufferedReader(new InputStreamReader(in));
|
||||
return reader.readLine();
|
||||
}
|
||||
|
||||
public static void sendLine(Socket socket, String line) throws IOException {
|
||||
OutputStream out = socket.getOutputStream();
|
||||
PrintWriter writer = new PrintWriter(out);
|
||||
writer.println(line);
|
||||
writer.flush();
|
||||
}
|
||||
}
|
80
src/Praktikum4/SorterServer.java
Normal file
80
src/Praktikum4/SorterServer.java
Normal file
@ -0,0 +1,80 @@
|
||||
package Praktikum4;
|
||||
|
||||
|
||||
import java.io.*;
|
||||
import java.net.ServerSocket;
|
||||
import java.net.Socket;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
public class SorterServer implements Runnable {
|
||||
public static void main(String[] args) {
|
||||
final int port = 12345;
|
||||
try (ServerSocket socket = new ServerSocket(port)) {
|
||||
while (true) {
|
||||
Socket client = socket.accept();
|
||||
Thread thread = new Thread(new SorterServer(client));
|
||||
thread.start();
|
||||
}
|
||||
} catch (Exception e) {
|
||||
System.err.println("Error: " + e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
private Socket socket;
|
||||
|
||||
private SorterServer(Socket socket) {
|
||||
this.socket = socket;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
try {
|
||||
String msg = receiveLine(this.socket);
|
||||
String ausgabe=sortAndCount(msg);
|
||||
sendLine(socket,ausgabe );
|
||||
}
|
||||
catch (Exception e) {};
|
||||
}
|
||||
|
||||
|
||||
public static String receiveLine(Socket socket) throws IOException {
|
||||
InputStream in = socket.getInputStream();
|
||||
BufferedReader reader = new BufferedReader(new InputStreamReader(in));
|
||||
return reader.readLine();
|
||||
}
|
||||
|
||||
public static void sendLine(Socket socket, String line) throws IOException {
|
||||
OutputStream out = socket.getOutputStream();
|
||||
PrintWriter writer = new PrintWriter(out);
|
||||
writer.println(line);
|
||||
writer.flush();
|
||||
}
|
||||
|
||||
public static String sortAndCount(String input) {
|
||||
|
||||
Map<Character, Integer> charCountMap = new HashMap<>();
|
||||
|
||||
|
||||
for (char c : input.toCharArray()) {
|
||||
charCountMap.put(c, charCountMap.getOrDefault(c, 0) + 1);
|
||||
}
|
||||
|
||||
|
||||
StringBuilder sortedString = new StringBuilder();
|
||||
|
||||
|
||||
for (char c = 'a'; c <= 'z'; c++) {
|
||||
|
||||
if (charCountMap.containsKey(c)) {
|
||||
int count = charCountMap.get(c);
|
||||
for (int i = 0; i < count; i++) {
|
||||
sortedString.append(c);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Rückgabe der sortierten Zeichenkette
|
||||
return sortedString.toString();
|
||||
}
|
||||
}
|
11
src/Praktikum4/Table.java
Normal file
11
src/Praktikum4/Table.java
Normal file
@ -0,0 +1,11 @@
|
||||
package Praktikum4;
|
||||
|
||||
public class Table {
|
||||
public static void main(String[] args) {
|
||||
Fork[] forks = { new Fork(0), new Fork(1), new Fork(2),
|
||||
new Fork(3), new Fork(4)}; Philosopher[] philosophers = {
|
||||
new Philosopher(0, forks[0], forks[1]), new Philosopher(1, forks[1], forks[2]), new Philosopher(2, forks[2], forks[3]), new Philosopher(3, forks[3], forks[4]), new Philosopher(4, forks[4], forks[0])
|
||||
};
|
||||
for (Philosopher philosopher : philosophers) { Thread t = new Thread(philosopher); t.start();
|
||||
} }
|
||||
}
|
@ -1,2 +0,0 @@
|
||||
public class test {
|
||||
}
|
33
test/HelloWorld/ExecutorTest.java
Normal file
33
test/HelloWorld/ExecutorTest.java
Normal file
@ -0,0 +1,33 @@
|
||||
/*package HelloWorld;
|
||||
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.*;
|
||||
|
||||
|
||||
class ExecutorTest {
|
||||
|
||||
@Test
|
||||
void printwriteHelloWorld() {
|
||||
|
||||
|
||||
//Mock-Objekte werden erzeugt
|
||||
IHelloWorldWriter outMock =mock(OutWriter.class);
|
||||
IHelloWorldWriter errMock =mock(OutWriter.class);
|
||||
|
||||
Executor.printwriteHelloWorld(outMock,errMock,true);
|
||||
|
||||
verify(outMock,times(1)).writeHelloWorld();
|
||||
verify(errMock,times(0)).writeHelloWorld();
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//writeHelloWorld wird einmal für outMock aufgerufen und keinmal für errMock, weil second auf false gesetzt wurde
|
||||
|
||||
// Mock -Objekte ermöglichen, Verhalten von Abhängigkeiten zu testen. Bei unserem Fall können wir nun die Methode aufrufen ohen das tatsächlich was geprintet wurde
|
||||
|
||||
// Bei fehlerhaftem Verhalten würde der Test fehlschlagen -- Die Methode hat also nicht die erwarteten Aufrufe
|
||||
|
||||
*/
|
33
test/Praktikum4/ForkTest.java
Normal file
33
test/Praktikum4/ForkTest.java
Normal file
@ -0,0 +1,33 @@
|
||||
package Praktikum4;
|
||||
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.*;
|
||||
|
||||
class ForkTest {
|
||||
|
||||
@Test
|
||||
void getId() {
|
||||
Fork fork = new Fork(1);
|
||||
assertEquals(1, fork.getId());
|
||||
}
|
||||
|
||||
@Test
|
||||
void take() {
|
||||
Fork fork = new Fork(2);
|
||||
assertTrue(fork.take());// sollte nicht in Gebrauch sein
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
void put() {
|
||||
Fork fork = new Fork(3);
|
||||
fork.put();
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
37
test/praktikum1/TriangleCheckerTest.java
Normal file
37
test/praktikum1/TriangleCheckerTest.java
Normal file
@ -0,0 +1,37 @@
|
||||
package praktikum1;
|
||||
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.*;
|
||||
|
||||
class TriangleCheckerTest {
|
||||
|
||||
@Test
|
||||
void checkEquilateralTriangle() {
|
||||
//Gleichseitig
|
||||
assertEquals(TriangleChecker.TriangleType.EQUILATERAL,TriangleChecker.checkTriangle(5,5,5));
|
||||
}
|
||||
@Test
|
||||
void checkIsoscelesTriangle(){
|
||||
//Gleichschenklich
|
||||
assertEquals(TriangleChecker.TriangleType.ISOSCELES, TriangleChecker.checkTriangle(5,5,3));
|
||||
assertEquals(TriangleChecker.TriangleType.ISOSCELES, TriangleChecker.checkTriangle(3,5,5));
|
||||
assertEquals(TriangleChecker.TriangleType.ISOSCELES, TriangleChecker.checkTriangle(5,3,5));
|
||||
}
|
||||
|
||||
@Test
|
||||
void checkNormalTrianlge(){
|
||||
assertEquals(TriangleChecker.TriangleType.NORMAL,TriangleChecker.checkTriangle(3,5,7));
|
||||
}
|
||||
@Test
|
||||
void chechNoneTrianlge(){
|
||||
assertEquals(TriangleChecker.TriangleType.NONE,TriangleChecker.checkTriangle(100,10,1));
|
||||
assertEquals(TriangleChecker.TriangleType.NONE,TriangleChecker.checkTriangle(10,100,1));
|
||||
assertEquals(TriangleChecker.TriangleType.NONE,TriangleChecker.checkTriangle(1,10,100));
|
||||
assertEquals(TriangleChecker.TriangleType.NONE,TriangleChecker.checkTriangle(-2,2,3));
|
||||
assertEquals(TriangleChecker.TriangleType.NONE,TriangleChecker.checkTriangle(2,-2,3));
|
||||
assertEquals(TriangleChecker.TriangleType.NONE,TriangleChecker.checkTriangle(2,2,-3));
|
||||
|
||||
|
||||
}
|
||||
}
|
32
test/praktikum1/ZahlenfilterTest.java
Normal file
32
test/praktikum1/ZahlenfilterTest.java
Normal file
@ -0,0 +1,32 @@
|
||||
package praktikum1;
|
||||
|
||||
import com.sun.org.apache.xpath.internal.objects.XNumber;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.*;
|
||||
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
class ZahlenfilterTest {
|
||||
|
||||
@org.junit.jupiter.api.Test
|
||||
void istdurch5teilbar() {
|
||||
|
||||
assertFalse(Zahlenfilter.istdurch5teilbar(12));
|
||||
assertTrue(Zahlenfilter.istdurch5teilbar(10));
|
||||
|
||||
}
|
||||
|
||||
@org.junit.jupiter.api.Test
|
||||
void auf9endet() {
|
||||
assertTrue(Zahlenfilter.auf9endet(89));
|
||||
assertFalse(Zahlenfilter.auf9endet(65));
|
||||
}
|
||||
|
||||
@org.junit.jupiter.api.Test
|
||||
void addiertunddurch3() {
|
||||
assertTrue(Zahlenfilter.addiertunddurch3(9,6));
|
||||
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user