Java :: Aufgabe #199

2 Lösungen Lösungen öffentlich

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.

Lösungen:

vote_ok
von calvy (60 Punkte) - 23.07.2018 um 14:13 Uhr
Quellcode ausblenden Java-Code
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;
		}
	}
}
vote_ok
von nOrdan (1160 Punkte) - 09.06.2019 um 22:41 Uhr
Anmerkung: Habe noch die Möglichkeit eingebaut zwischen weiblich und männlich zu wählen.

Quellcode ausblenden 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);
    }
}