Vorlesung 12 / Aufgabe 1
This commit is contained in:
parent
cea993fcd1
commit
7f8b2953fb
95
VL12/Aufgabe01/Aufgabe01.java
Normal file
95
VL12/Aufgabe01/Aufgabe01.java
Normal file
@ -0,0 +1,95 @@
|
|||||||
|
package VL12.Aufgabe01;
|
||||||
|
|
||||||
|
import java.io.FileWriter;
|
||||||
|
import java.util.Random;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Vorlesung 12 - Ein- und Ausgabe - Aufgabe 1
|
||||||
|
* @author Sebastian Brosch
|
||||||
|
*/
|
||||||
|
public class Aufgabe01 {
|
||||||
|
public static void main(String[] args) {
|
||||||
|
final String COLUMN_SEPARATOR = "#";
|
||||||
|
int cntDataSets = 0;
|
||||||
|
int startKundennummer = 0;
|
||||||
|
|
||||||
|
try {
|
||||||
|
System.out.print("Anzahl der Datensätze: ");
|
||||||
|
cntDataSets = Integer.parseInt(System.console().readLine());
|
||||||
|
} catch(NumberFormatException e) {
|
||||||
|
System.out.println("Es wurde keine gültige Anzahl für Datensätze angegeben!");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
System.out.print("Startwert für Kundennummer: ");
|
||||||
|
startKundennummer = Integer.parseInt(System.console().readLine());
|
||||||
|
} catch(NumberFormatException e) {
|
||||||
|
System.out.println("Es wurde keine gültige Startnummer für die Kundennummer angegeben!");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// the customer number have to be at least six digits.
|
||||||
|
if(startKundennummer < 100000) {
|
||||||
|
startKundennummer += 100000;
|
||||||
|
}
|
||||||
|
|
||||||
|
StringFeld namen = new StringFeld(getPathFromPackage() + "/input/Nachnamen.TXT");
|
||||||
|
StringFeld strassen = new StringFeld(getPathFromPackage() + "/input/Strassen.TXT");
|
||||||
|
StringFeld vornamen = new StringFeld(getPathFromPackage() + "/input/Vornamen.TXT");
|
||||||
|
StringFeld postleitzahlen = new StringFeld(getPathFromPackage() + "/input/PLZOrt.TXT", " ", 0);
|
||||||
|
StringFeld orte = new StringFeld(getPathFromPackage() + "/input/PLZOrt.TXT", " ", 1);
|
||||||
|
|
||||||
|
try {
|
||||||
|
FileWriter outputFixedWidth = new FileWriter(getPathFromPackage() + "/output/output-fixed-width.txt");
|
||||||
|
FileWriter outputSeparator = new FileWriter(getPathFromPackage() + "/output/output-separator.txt");
|
||||||
|
|
||||||
|
for(int i = 0; i < cntDataSets; i++) {
|
||||||
|
int kundennummer = startKundennummer + i;
|
||||||
|
int hausnummer = getRandomNumber(1, 99999);
|
||||||
|
int umsatz = getRandomNumber(500, 2000);
|
||||||
|
|
||||||
|
outputFixedWidth.write(String.format("%-6d", kundennummer));
|
||||||
|
outputFixedWidth.write(String.format("%-20s", namen.get(i, 20)));
|
||||||
|
outputFixedWidth.write(String.format("%-20s", vornamen.get(i, 20)));
|
||||||
|
outputFixedWidth.write(String.format("%-20s", strassen.get(i, 20)));
|
||||||
|
outputFixedWidth.write(String.format("%-5s", hausnummer));
|
||||||
|
outputFixedWidth.write(String.format("%-5s", postleitzahlen.get(i)));
|
||||||
|
outputFixedWidth.write(String.format("%-20s", orte.get(i, 20)));
|
||||||
|
outputFixedWidth.write(String.format("%-5s", umsatz));
|
||||||
|
outputFixedWidth.write("\n");
|
||||||
|
|
||||||
|
outputSeparator.write(String.format("%d" + COLUMN_SEPARATOR, kundennummer));
|
||||||
|
outputSeparator.write(String.format("%s" + COLUMN_SEPARATOR, namen.get(i)));
|
||||||
|
outputSeparator.write(String.format("%s" + COLUMN_SEPARATOR, vornamen.get(i)));
|
||||||
|
outputSeparator.write(String.format("%s" + COLUMN_SEPARATOR, strassen.get(i)));
|
||||||
|
outputSeparator.write(String.format("%d" + COLUMN_SEPARATOR, hausnummer));
|
||||||
|
outputSeparator.write(String.format("%s" + COLUMN_SEPARATOR, postleitzahlen.get(i)));
|
||||||
|
outputSeparator.write(String.format("%s" + COLUMN_SEPARATOR, orte.get(i)));
|
||||||
|
outputSeparator.write(String.format("%d", umsatz));
|
||||||
|
outputSeparator.write("\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
outputFixedWidth.close();
|
||||||
|
outputSeparator.close();
|
||||||
|
} catch(Throwable e) {;}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Method to determine a random number from a certain range.
|
||||||
|
* @param start The first number of the range.
|
||||||
|
* @param end The last number of the range.
|
||||||
|
* @return A random number from a certain range.
|
||||||
|
*/
|
||||||
|
private static int getRandomNumber(int start, int end) {
|
||||||
|
return (new Random()).nextInt(end-start) + start;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Method to get the relative path based on the package name.
|
||||||
|
* @return The relative path of the package based on the package name.
|
||||||
|
*/
|
||||||
|
private static String getPathFromPackage() {
|
||||||
|
return Aufgabe01.class.getPackageName().replace(".", "/");
|
||||||
|
}
|
||||||
|
}
|
70
VL12/Aufgabe01/StringFeld.java
Normal file
70
VL12/Aufgabe01/StringFeld.java
Normal file
@ -0,0 +1,70 @@
|
|||||||
|
package VL12.Aufgabe01;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.nio.charset.StandardCharsets;
|
||||||
|
import java.nio.file.Files;
|
||||||
|
import java.nio.file.Paths;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A field to store some information.
|
||||||
|
* @author Sebastian Brosch
|
||||||
|
*/
|
||||||
|
class StringFeld {
|
||||||
|
private String[] values;
|
||||||
|
|
||||||
|
StringFeld(String filePath) {
|
||||||
|
List<String> lines = getFileLines(filePath);
|
||||||
|
this.values = new String[lines.size()];
|
||||||
|
lines.toArray(this.values);
|
||||||
|
}
|
||||||
|
|
||||||
|
StringFeld(String filePath, String separator, int index) {
|
||||||
|
List<String> lines = getFileLines(filePath);
|
||||||
|
this.values = new String[lines.size()];
|
||||||
|
|
||||||
|
for(int i = 0; i < lines.size(); i++) {
|
||||||
|
this.values[i] = lines.get(i).split(separator)[index];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Method to get a value.
|
||||||
|
* @param index The index of the value.
|
||||||
|
* @return The value of the given index.
|
||||||
|
*/
|
||||||
|
public String get(int index) {
|
||||||
|
index = index % this.values.length;
|
||||||
|
return this.values[index];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Method to get a value.
|
||||||
|
* @param index The index of the value.
|
||||||
|
* @param maxLength The max length of the value.
|
||||||
|
* @return The value of the given index.
|
||||||
|
*/
|
||||||
|
public String get(int index, int maxLength) {
|
||||||
|
index = index % this.values.length;
|
||||||
|
|
||||||
|
if(this.values[index].length() > maxLength) {
|
||||||
|
return this.values[index].substring(0, maxLength);
|
||||||
|
} else {
|
||||||
|
return this.values[index];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Method to get all the lines of a file.
|
||||||
|
* @param filePath The path to the file to get the lines from.
|
||||||
|
* @return A list with all lines of the file.
|
||||||
|
*/
|
||||||
|
private List<String> getFileLines(String filePath) {
|
||||||
|
try {
|
||||||
|
return Files.readAllLines(Paths.get(filePath), StandardCharsets.ISO_8859_1);
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
return List.of();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
12
VL12/Aufgabe01/input/Nachnamen.TXT
Normal file
12
VL12/Aufgabe01/input/Nachnamen.TXT
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
Meier
|
||||||
|
Kaiser
|
||||||
|
Hellmann
|
||||||
|
Fuchs
|
||||||
|
Hampel
|
||||||
|
Hinz
|
||||||
|
Schmidt
|
||||||
|
Andrack
|
||||||
|
Zerlett
|
||||||
|
Novincack
|
||||||
|
Ullmann
|
||||||
|
Mayer
|
25
VL12/Aufgabe01/input/PLZOrt.TXT
Normal file
25
VL12/Aufgabe01/input/PLZOrt.TXT
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
72160 Horb
|
||||||
|
70179 Stuttgart
|
||||||
|
70191 Stuttgart
|
||||||
|
70192 Stuttgart
|
||||||
|
70193 Stuttgart
|
||||||
|
70195 Stuttgart
|
||||||
|
70197 Stuttgart
|
||||||
|
70199 Stuttgart
|
||||||
|
70327 Stuttgart
|
||||||
|
72070 Tübingen
|
||||||
|
72072 Tübingen
|
||||||
|
72074 Tübingen
|
||||||
|
72076 Tübingen
|
||||||
|
72181 Starzach
|
||||||
|
72182 Eutingen
|
||||||
|
72184 Eutingen
|
||||||
|
72185 Empfingen
|
||||||
|
72186 Empfingen
|
||||||
|
72186 Weiherhof
|
||||||
|
72187 Vöhringen
|
||||||
|
72189 Vöhringen
|
||||||
|
72202 Nagold
|
||||||
|
72210 Altensteig
|
||||||
|
72213 Altensteig
|
||||||
|
72218 Wildberg
|
11
VL12/Aufgabe01/input/Strassen.TXT
Normal file
11
VL12/Aufgabe01/input/Strassen.TXT
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
Hauptstr.
|
||||||
|
Dorfstr.
|
||||||
|
Rosenweg
|
||||||
|
Nelkenweg
|
||||||
|
Stuttgarter Str.
|
||||||
|
Ulmer Str.
|
||||||
|
Freiburger Str.
|
||||||
|
Münchner Str.
|
||||||
|
Goetheweg
|
||||||
|
Beethovenallee
|
||||||
|
Schillerstr.
|
10
VL12/Aufgabe01/input/Vornamen.TXT
Normal file
10
VL12/Aufgabe01/input/Vornamen.TXT
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
Frank
|
||||||
|
Steffi
|
||||||
|
Uschi
|
||||||
|
Carola
|
||||||
|
Susanne
|
||||||
|
Marion
|
||||||
|
Ingo
|
||||||
|
Stefan
|
||||||
|
Jochen
|
||||||
|
Holger
|
5
VL12/Aufgabe01/output/output-fixed-width.txt
Normal file
5
VL12/Aufgabe01/output/output-fixed-width.txt
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
100005Meier Frank Hauptstr. 9374272160Horb 728
|
||||||
|
100006Kaiser Steffi Dorfstr. 1743970179Stuttgart 1914
|
||||||
|
100007Hellmann Uschi Rosenweg 1318270191Stuttgart 593
|
||||||
|
100008Fuchs Carola Nelkenweg 3436270192Stuttgart 891
|
||||||
|
100009Hampel Susanne Stuttgarter Str. 2115270193Stuttgart 926
|
5
VL12/Aufgabe01/output/output-separator.txt
Normal file
5
VL12/Aufgabe01/output/output-separator.txt
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
100005#Meier#Frank#Hauptstr.#93742#72160#Horb#728
|
||||||
|
100006#Kaiser#Steffi#Dorfstr.#17439#70179#Stuttgart#1914
|
||||||
|
100007#Hellmann#Uschi#Rosenweg#13182#70191#Stuttgart#593
|
||||||
|
100008#Fuchs#Carola#Nelkenweg#34362#70192#Stuttgart#891
|
||||||
|
100009#Hampel#Susanne#Stuttgarter Str.#21152#70193#Stuttgart#926
|
Loading…
Reference in New Issue
Block a user