Dateien nach "/" hochladen
commit
2d13eab9c4
|
@ -0,0 +1,258 @@
|
|||
package Testate;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.InputStreamReader;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Random;
|
||||
import java.util.TreeMap;
|
||||
|
||||
public class Family {
|
||||
private String name;
|
||||
private int memberNum;
|
||||
private int address;
|
||||
private String planet;
|
||||
private static int letter = 'A';
|
||||
private ArrayList<Kind> kids = new ArrayList<>();
|
||||
private static TreeMap<Integer, Family> famTree = new TreeMap<Integer, Family>();
|
||||
|
||||
Random random = new Random();
|
||||
|
||||
public Family() {
|
||||
int letter = incrementLetter();
|
||||
int zufall = random.nextInt(3);
|
||||
this.name = (char) letter + "-Familie";
|
||||
|
||||
if (zufall == 0) {
|
||||
this.planet = "Mars";
|
||||
for (int i = 0; i < (2 * (letter - 'A')) + 1; i++) {
|
||||
kids.add(new Kind(generateKidName()));
|
||||
}
|
||||
|
||||
this.address = random.nextInt('Z' - 'A' + 1) + 'A';
|
||||
|
||||
} else if (zufall == 1) {
|
||||
this.planet = "Merkur";
|
||||
for (int i = 0; i < (2 * (letter - 'A')) + 2; i++) {
|
||||
kids.add(new Kind(generateKidName()));
|
||||
}
|
||||
char[] name = this.name.toCharArray();
|
||||
int adress = 0;
|
||||
for (char c : name) {
|
||||
adress += c;
|
||||
}
|
||||
this.address = adress;
|
||||
} else {
|
||||
this.planet = "Pluto";
|
||||
int anzahlMale = random.nextInt(3) + 2;
|
||||
int anzahlFem = random.nextInt(4) + 3;
|
||||
for (int i = 0; i < anzahlMale; i++) {
|
||||
kids.add(generateKid("male"));
|
||||
|
||||
}
|
||||
for (int i = 0; i < anzahlFem; i++) {
|
||||
kids.add(generateKid("female"));
|
||||
|
||||
}
|
||||
this.address = random.nextInt('z' - 100 + 1) + 100;
|
||||
}
|
||||
setMemberNum();
|
||||
famTree.put(letter - 'A' + 1, this);// fügt die aktuelle Instanz direkt bei der Erstellung in den St ein
|
||||
}
|
||||
|
||||
private int incrementLetter() {
|
||||
return letter++;
|
||||
}
|
||||
|
||||
public String toString() {
|
||||
return String.format("Name: %s\nPlanet: %s\nAnzahl der Familienmitglieder: %d\nAdresse: %d\n", name, planet,
|
||||
memberNum, address);
|
||||
}
|
||||
|
||||
public int getAdress() {
|
||||
return address;
|
||||
}
|
||||
|
||||
public void setAddress(int address) {
|
||||
this.address = address;
|
||||
}
|
||||
|
||||
public void setMemberNum() {
|
||||
this.memberNum = kids.size() + 2;// (+2) damit wir die Eltern berücksichtigen
|
||||
}
|
||||
|
||||
public void incrementMemberNum() {
|
||||
this.memberNum += 1;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public String generateKidName() {
|
||||
String name = "";
|
||||
int firstLetter = random.nextInt(26) + 65;
|
||||
|
||||
name += (char) firstLetter;
|
||||
for (int i = 0; i < 3; i++) {
|
||||
int otherLetter = random.nextInt(26) + 97;
|
||||
name += (char) otherLetter;
|
||||
}
|
||||
return name;
|
||||
}
|
||||
|
||||
public Kind generateKid(String sex) {
|
||||
Kind neuKid = new Kind(generateKidName(), sex);
|
||||
return neuKid;
|
||||
}
|
||||
|
||||
public String adress2binaer(int adress) {
|
||||
if (adress == 0) {
|
||||
return "0";
|
||||
}
|
||||
int remainder = adress % 2;
|
||||
int quotient = adress / 2;
|
||||
return adress2binaer(quotient) + remainder;
|
||||
}
|
||||
|
||||
public void introduceFam(String name) {
|
||||
Family family = getFamByName(name);
|
||||
System.out.printf("%s begrößt euch, unsere Familie besteht aus dem Vater, der Mutter und folgenden Kindern:\n",
|
||||
family.getName());
|
||||
for (Kind kind : family.kids) {
|
||||
System.out.println(kind.toString());
|
||||
}
|
||||
}
|
||||
|
||||
public void addKinderAllFam(int numKids) {
|
||||
for (Family family : famTree.values()) {
|
||||
String name = family.getName();
|
||||
for (int i = 0; i < numKids; i++) {
|
||||
addKindToFam(name);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public boolean addKindToFam(String famName) {
|
||||
Family family = getFamByName(famName);
|
||||
if (family != null) {
|
||||
family.kids.add(new Kind(generateKidName()));
|
||||
family.incrementMemberNum();
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public void showAllFam() {
|
||||
for (Family family : famTree.values()) {
|
||||
System.out.println(family.toString());
|
||||
}
|
||||
// FamTree.values().stream().forEach(System.out::println);
|
||||
}
|
||||
|
||||
public Family getFamByName(String name) {
|
||||
for (Family fam : famTree.values()) {
|
||||
if (fam.getName().equals(name)) {
|
||||
return fam;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public void showFamByName(String name) {
|
||||
Family family = getFamByName(name);
|
||||
System.out.println(family.toString());
|
||||
}
|
||||
|
||||
private static void showCommands() {
|
||||
System.out.println("Liste möglicher Befehle:(Bitte wählen Sie eine Zahl)");
|
||||
Family.printSlow(
|
||||
"1.Zeig alle Familien\n2.Zeig eine Familie\n3.Eine Familie vorstellen \n4.Füge ein Kind zu einer Familie\n5.Füge n-Kinder zu allen Familien\n6.Kodiere die Adresse in binäre\n7.Programm beenden");
|
||||
}
|
||||
|
||||
public static void printSlow(String output) {
|
||||
output += "\n";
|
||||
try {
|
||||
for (char x : output.toCharArray()) {
|
||||
|
||||
System.out.print(x);
|
||||
Thread.sleep(3);
|
||||
}
|
||||
|
||||
} catch (InterruptedException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
public void run() {
|
||||
Family.printSlow("Willkommen im All:");
|
||||
try (BufferedReader reader = new BufferedReader(new InputStreamReader(System.in))) {
|
||||
while (true) {
|
||||
showCommands();
|
||||
System.out.print("Input:");
|
||||
int eingabe = Integer.parseInt(reader.readLine());
|
||||
System.out.println("");
|
||||
switch (eingabe) {
|
||||
case 1: {
|
||||
showAllFam();
|
||||
break;
|
||||
}
|
||||
case 2: {
|
||||
Family.printSlow("Bitte geben Sie den Buchstaben der Familie ein:");
|
||||
String buchstabe = reader.readLine().toUpperCase();
|
||||
showFamByName(buchstabe + "-Familie");
|
||||
break;
|
||||
}
|
||||
case 3: {
|
||||
Family.printSlow("Bitte geben Sie den Buchstaben der Familie ein:");
|
||||
String buchstabe = reader.readLine().toUpperCase();
|
||||
String Name = buchstabe + "-Familie";
|
||||
introduceFam(Name);
|
||||
break;
|
||||
|
||||
}
|
||||
case 4: {
|
||||
Family.printSlow("Bitte geben Sie den Buchstaben der Familie ein:");
|
||||
String buchstabe = reader.readLine().toUpperCase();
|
||||
String name = buchstabe + "-Familie";
|
||||
if (addKindToFam(name)) {
|
||||
Family.printSlow("Ein Kind wurde erfolgreich hinzugefügt.");
|
||||
System.out.println(getFamByName(name).toString());
|
||||
} else {
|
||||
Family.printSlow("Das Kind konnte nicht hinzugefügt wurde");
|
||||
}
|
||||
break;
|
||||
|
||||
}
|
||||
case 5: {
|
||||
Family.printSlow("Bitte geben Sie die Anzahl den Kindern:");
|
||||
int numKids = Integer.parseInt(reader.readLine());
|
||||
addKinderAllFam(numKids);
|
||||
Family.printSlow("Einfügen war erfolgreich");
|
||||
showAllFam();
|
||||
break;
|
||||
}
|
||||
case 6: {
|
||||
Family.printSlow("Encryption mode activated\n");
|
||||
for (Family family : famTree.values()) {
|
||||
int oldAdress = family.getAdress();
|
||||
|
||||
int binaer = Integer.parseInt(adress2binaer(oldAdress));
|
||||
family.setAddress(binaer);
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
case 7: {
|
||||
System.exit(0);
|
||||
}
|
||||
default:
|
||||
throw new IllegalArgumentException("Unexpected value: " + eingabe);
|
||||
}
|
||||
}
|
||||
} catch (Exception e) {
|
||||
System.out.println("Beachten Sie das Format");
|
||||
}
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,89 @@
|
|||
package Testate;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Random;
|
||||
|
||||
public class Kind {
|
||||
private String name;
|
||||
private String id;
|
||||
private int birthDate;
|
||||
private int birthMonth;
|
||||
private int birthDay;
|
||||
private String sex;
|
||||
private static ArrayList<String> sexList = new ArrayList<String>(Arrays.asList("male","female"));
|
||||
private static Random random = new Random();
|
||||
|
||||
public Kind(String name, String sex) {
|
||||
this.sex = sex;
|
||||
this.name = name;
|
||||
this.id = name2id();
|
||||
this.birthDate = random.nextInt(366) + 1;
|
||||
|
||||
int [] earthDate = num2birth(getBirthDate());
|
||||
this.birthMonth = earthDate[0];
|
||||
this.birthDay = earthDate[1];
|
||||
|
||||
if (!sexList.contains(sex.toLowerCase())) {
|
||||
sexList.add(sex);
|
||||
}
|
||||
}
|
||||
public Kind(String name) {
|
||||
this(name, sexList.get(random.nextInt(sexList.size())));
|
||||
}
|
||||
public String getId() {
|
||||
return id;
|
||||
}
|
||||
public void setId(String id) {
|
||||
this.id = id;
|
||||
}
|
||||
public int getBirthDate() {
|
||||
return birthDate;
|
||||
}
|
||||
public void setBirthDate(int birthDate) {
|
||||
this.birthDate = birthDate;
|
||||
}
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public String getSex() {
|
||||
return sex;
|
||||
}
|
||||
public int[] num2birth(int date) {
|
||||
int[] monthDays = {0,31,28,31,30,31,30,31,31,30,31,30,31};
|
||||
|
||||
if (date == 366) {
|
||||
monthDays[2] = 29;
|
||||
}
|
||||
int [] earthDate = new int[2];
|
||||
for (int i = 1; i <= 12; i++) {
|
||||
if (date <= monthDays[i]) {
|
||||
earthDate[0] = i;
|
||||
earthDate[1] = date;
|
||||
break;
|
||||
} else {
|
||||
date -= monthDays[i];
|
||||
}
|
||||
}
|
||||
return earthDate;
|
||||
}
|
||||
|
||||
private String name2id() {
|
||||
char[] name = getName().toCharArray();
|
||||
String id = "";
|
||||
for (char c : name) {
|
||||
String hexValue = Integer.toHexString(c);
|
||||
id += hexValue;
|
||||
}
|
||||
return id;
|
||||
}
|
||||
public String toString() {
|
||||
return String.format("Mein Name ist: %s, ID: %s, Sex: %s, Birth Date: %s, Birthday: %d, Birthmonth: %d\n",
|
||||
name, id, sex, birthDate, birthDay, birthMonth);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
|
@ -0,0 +1,12 @@
|
|||
package Testate;
|
||||
|
||||
|
||||
public class testing {
|
||||
public static void main(String[] args) {
|
||||
Family family1 = new Family();
|
||||
Family family2 = new Family();
|
||||
Family family3 = new Family();
|
||||
family3.run();
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue