From 2cc61992d1b9c4920fe43bb97a80fac7bdc3f27b Mon Sep 17 00:00:00 2001 From: Gerd Marmitt Date: Thu, 25 Apr 2024 11:14:48 +0200 Subject: [PATCH] added code for exercises --- Indexverwaltung/.vscode/settings.json | 7 ++ Indexverwaltung/README.md | 18 ++++++ Indexverwaltung/src/Datei.java | 3 + Indexverwaltung/src/Index.java | 92 +++++++++++++++++++++++++++ Indexverwaltung/src/IndexUI.java | 5 ++ StackDemo/.vscode/settings.json | 7 ++ StackDemo/README.md | 18 ++++++ StackDemo/src/Item.java | 15 +++++ StackDemo/src/StackDemo.java | 14 ++++ 9 files changed, 179 insertions(+) create mode 100644 Indexverwaltung/.vscode/settings.json create mode 100644 Indexverwaltung/README.md create mode 100644 Indexverwaltung/src/Datei.java create mode 100644 Indexverwaltung/src/Index.java create mode 100644 Indexverwaltung/src/IndexUI.java create mode 100644 StackDemo/.vscode/settings.json create mode 100644 StackDemo/README.md create mode 100644 StackDemo/src/Item.java create mode 100644 StackDemo/src/StackDemo.java diff --git a/Indexverwaltung/.vscode/settings.json b/Indexverwaltung/.vscode/settings.json new file mode 100644 index 0000000..0ac215c --- /dev/null +++ b/Indexverwaltung/.vscode/settings.json @@ -0,0 +1,7 @@ +{ + "java.project.sourcePaths": ["src"], + "java.project.outputPath": "bin", + "java.project.referencedLibraries": [ + "lib/**/*.jar" + ] +} diff --git a/Indexverwaltung/README.md b/Indexverwaltung/README.md new file mode 100644 index 0000000..a43b9f6 --- /dev/null +++ b/Indexverwaltung/README.md @@ -0,0 +1,18 @@ +## Getting Started + +Welcome to the VS Code Java world. Here is a guideline to help you get started to write Java code in Visual Studio Code. + +## Folder Structure + +The workspace contains two folders by default, where: + +- `src`: the folder to maintain sources +- `lib`: the folder to maintain dependencies + +Meanwhile, the compiled output files will be generated in the `bin` folder by default. + +> If you want to customize the folder structure, open `.vscode/settings.json` and update the related settings there. + +## Dependency Management + +The `JAVA PROJECTS` view allows you to manage your dependencies. More details can be found [here](https://github.com/microsoft/vscode-java-dependency#manage-dependencies). diff --git a/Indexverwaltung/src/Datei.java b/Indexverwaltung/src/Datei.java new file mode 100644 index 0000000..4d27c7d --- /dev/null +++ b/Indexverwaltung/src/Datei.java @@ -0,0 +1,3 @@ +public class Datei { + // Hier könnte ihr genialer Code stehen +} diff --git a/Indexverwaltung/src/Index.java b/Indexverwaltung/src/Index.java new file mode 100644 index 0000000..e8dd2d8 --- /dev/null +++ b/Indexverwaltung/src/Index.java @@ -0,0 +1,92 @@ +import java.io.*; + +public class Index { + // Attribute + private final int MAX = 10; + private String dateiname = "Indexdatei.txt"; + private int indextabelle[]; // 0 .. MAX-1 + private RandomAccessFile eineIndexDatei; + + // Konstruktor + public Index() + { + indextabelle = new int[MAX]; + // Initialisierung der indextabelle + for(int i = 0; i < MAX; i++) indextabelle[i] = -1; + // Kein Datensatz zu Schluessel vorhanden + } + + // Methoden + public void erzeugeEintrag(int schluessel, int index) throws IOException + { + /** Speichert zu einen Schluessel den zugehoerigen + * Datensatz-Index in der indextabelle + */ + if(schluessel < MAX) + indextabelle[schluessel] = index; + // Aktualisieren der Indexdatei, + // d. h. Abspeichern der Datei + aktualisiereIndexDatei(schluessel); + } + + public int gibIndexZuSchluessel(int schluessel) + { + // Gibt zu dem Schluessel den gefundenen + // Datensatz-Index zurueck + if(schluessel < MAX) + return indextabelle[schluessel]; + // oder -1, wenn Schluessel zu gross ist + else + return -1; + } + + public void ladeIndexDatei() throws IOException + { + /** Liest die Indextabelle vollstaendig aus einer Datei + * Dies geschieht nur beim Start des Programms + */ + eineIndexDatei = new RandomAccessFile(dateiname, "r"); + int index; + for(int schluessel = 0; schluessel < MAX; schluessel++) + { + index = eineIndexDatei.readInt(); + indextabelle[schluessel] = index; + } + eineIndexDatei.close(); + } + + public void speichereIndexDatei() throws IOException + { + /** Speichert die Indextabelle vollstaendig in einer Datei + * Dies geschlieht beim beenden des Programs + */ + eineIndexDatei = new RandomAccessFile(dateiname, "rw"); + for(int schluessel = 0; schluessel < MAX; schluessel++) + eineIndexDatei.writeInt(indextabelle[schluessel]); + eineIndexDatei.close(); + } + + private void aktualisiereIndexDatei(int schluessel) throws IOException + { + /** Aktualisiert die indextabelle in der Indexdatei + * Dies geschliet beim Hinzufuegen eines neuen + * Indexes oder Aendern eines alten Indexes + */ + eineIndexDatei = new RandomAccessFile(dateiname, "rw"); + // eine int-Zahl belegt 4 Bytes + eineIndexDatei.seek((long)(schluessel * 4)); + eineIndexDatei.writeInt(indextabelle[schluessel]); + eineIndexDatei.close(); + } + + // Zum Testen + public void gibIndextabelleAus() + { + int schluessel = 0; + for(int element : indextabelle) + { + System.out.println(schluessel + " " + element); + schluessel++; + } + } +} diff --git a/Indexverwaltung/src/IndexUI.java b/Indexverwaltung/src/IndexUI.java new file mode 100644 index 0000000..c3e2a86 --- /dev/null +++ b/Indexverwaltung/src/IndexUI.java @@ -0,0 +1,5 @@ +public class IndexUI { + public static void main(String[] args) throws Exception { + // Hier könnte ihr genialer Code stehen + } +} \ No newline at end of file diff --git a/StackDemo/.vscode/settings.json b/StackDemo/.vscode/settings.json new file mode 100644 index 0000000..0ac215c --- /dev/null +++ b/StackDemo/.vscode/settings.json @@ -0,0 +1,7 @@ +{ + "java.project.sourcePaths": ["src"], + "java.project.outputPath": "bin", + "java.project.referencedLibraries": [ + "lib/**/*.jar" + ] +} diff --git a/StackDemo/README.md b/StackDemo/README.md new file mode 100644 index 0000000..a43b9f6 --- /dev/null +++ b/StackDemo/README.md @@ -0,0 +1,18 @@ +## Getting Started + +Welcome to the VS Code Java world. Here is a guideline to help you get started to write Java code in Visual Studio Code. + +## Folder Structure + +The workspace contains two folders by default, where: + +- `src`: the folder to maintain sources +- `lib`: the folder to maintain dependencies + +Meanwhile, the compiled output files will be generated in the `bin` folder by default. + +> If you want to customize the folder structure, open `.vscode/settings.json` and update the related settings there. + +## Dependency Management + +The `JAVA PROJECTS` view allows you to manage your dependencies. More details can be found [here](https://github.com/microsoft/vscode-java-dependency#manage-dependencies). diff --git a/StackDemo/src/Item.java b/StackDemo/src/Item.java new file mode 100644 index 0000000..5a5437f --- /dev/null +++ b/StackDemo/src/Item.java @@ -0,0 +1,15 @@ +/**Copyright (c) Louis, D., Müller, P.: "Java. Der umfassende Programmierkurs" + * O`Reilly Verlag, Köln, 2014 + * StackDemo.java - Demoprogramm zu Container, S. xxx +*/ + +class Item { + // Konstruktor + Item(char z, int w) { + zeichen = z; + prio = w; + } + + char zeichen; + int prio; +} diff --git a/StackDemo/src/StackDemo.java b/StackDemo/src/StackDemo.java new file mode 100644 index 0000000..1414bf5 --- /dev/null +++ b/StackDemo/src/StackDemo.java @@ -0,0 +1,14 @@ +/**Copyright (c) Louis, D., Müller, P.: "Java. Der umfassende Programmierkurs" + * O`Reilly Verlag, Köln, 2014 + * StackDemo.java - Demoprogramm zu Container, S. xxx +*/ + +import java.util.Scanner; +import java.util.Stack; +import java.util.StringTokenizer; + +public class StackDemo { + public static void main(String[] args) throws Exception { + // Hier könnte ihr genialer Code stehen + } +}