Java :: Aufgabe #199
2 Lösungen

Einfacher Namensgenerator
Anfänger - Java
von Exception
- 30.05.2018 um 15:23 Uhr
Schreibe ein Programm, welches zwei Textdateien (zb Vorname.txt, Nachname.txt) Zeile für Zeile in ein Array lädt.
Gebe dann eine zufällige Kombination aus Vornamen und Nachnamen aus.
Gebe dann eine zufällige Kombination aus Vornamen und Nachnamen aus.
Lösungen:

import java.io.*; import java.util.*; public class NameGen { public static void main(String[] args) throws IOException { // Listen übertragen den Dateieninhalt und die benötigte Arraygröße List<String> firstlist = getContent(new File("Vornamen.txt")); List<String> lastlist = getContent(new File("Nachnamen.txt")); int fsize = firstlist.size(); int lsize = lastlist.size(); String[] firstname = new String[fsize]; String[] lastname = new String[lsize]; // Füllen der Arrays for (int i = 0; i < fsize; i++) { firstname[i] = firstlist.get(i); } for (int j = 0; j < lsize; j++) { lastname[j] = lastlist.get(j); } System.out.println(firstname[(int) (Math.random() * fsize)] + " " + lastname[(int) (Math.random() * lsize)]); // Max. Wert: fsize bzw. lsize; Min. Wert: 0 } private static List<String> getContent(File file) throws IOException { if (file.exists()) { BufferedReader bufread = new BufferedReader(new FileReader(file)); String line; List<String> list = new ArrayList<String>(); while (null != (line = bufread.readLine())) { list.add(line); } return list; } else { // falls die Datei nicht gefunden wurde System.out.println("Die Datei existiert nicht"); return null; } } }
Anmerkung: Habe noch die Möglichkeit eingebaut zwischen weiblich und männlich zu wählen.
Java-Code

import java.io.FileReader; import java.io.BufferedReader; import java.io.IOException; import Methodensammlung.Methoden; /** * Ein zufälliger Name wird generiert. Man kann weiblich oder männlich wählen, wobei es von beiden 500 verschiedene Namen gibt. Es gibt 1000 verschiedene Nachnamen. * * @author (nOrdan) * @version (09.06.2019) */ public class Generator { private static final String [] maennlicheVornamen = new String [500]; private static final String [] weiblicheVornamen = new String [500]; private static final String [] nachnamen = new String [1000]; Methoden m = new Methoden(); public static void main(String [] args) throws IOException { FileReader fmv = new FileReader("Textfiles/männlicheVornamen.txt"); BufferedReader bmv = new BufferedReader(fmv); for (int i = 0; i < 500; i++) { maennlicheVornamen[i] = bmv.readLine(); } FileReader fwv = new FileReader("Textfiles/weiblicheVornamen.txt"); BufferedReader bwv = new BufferedReader(fwv); for (int y = 0; y < 500; y++) { weiblicheVornamen[y] = bwv.readLine(); } FileReader fn = new FileReader("Textfiles/nachnamen.txt"); BufferedReader bn = new BufferedReader(fn); for (int z = 0; z < 1000; z++) { nachnamen[z] = bn.readLine(); } Generator g = new Generator(); g.inputs(); } private void inputs() { boolean valid1 = false; while (valid1 == false) { String input1 = m.userInput("Geben sie an ob sie einen weiblichen Vornamen (w) oder einen männlichen Vornamen (m) haben wollen"); if (input1 == null) { System.exit(0); } else if (input1.isEmpty() == true) { m.errorMessage("Bitte geben sie etwas ein","No input"); continue; } input1 = input1.toLowerCase().replaceAll("\\s+",""); if (input1.equals("w") || input1.equals("m")) { valid1 = true; generieren(input1); } else { m.errorMessage("Geben sie bitte nur w oder m ein","Invalid input"); continue; } } } private void generieren(String art) { String name = ""; if (art.equals("w")) { name += weiblicheVornamen[roll500()]; } else { name += maennlicheVornamen[roll500()]; } name += " "; name += nachnamen[roll1000()]; m.informationMessage("Ihr zufällig generierter Name ist " + name,"Generierter Name"); } private int roll500() { return (int) (Math.random() * 499); } private int roll1000() { return (int) (Math.random() * 999); } }