Textbausteine von einander abgrenzen?

  • 7 Antworten
  • Letztes Antwortdatum
ui_3k1

ui_3k1

Gesperrt
197
Hallo liebes Forum,

ich bin neu in der App-Entwicklung und habe eine wahrscheinlich recht simple Frage..

Ich habe einen Phrasen-Generator erstellt.
Das Programm würfelt einen einleitenden Satz, dann kommen weitere Textbausteine.

Allerdings funktioniert das Programm derzeit nur für die weibliche Form (z.B Cola)
Beispiel:
Baustein 1 => Ich hätte gerne einE
Baustein 2 => eiskaltE
Baustein 3 => Cola

Wenn ich nun Substantive der männlichen Form (z.B Mann) generieren lassen möchte müssen die Bausteine 1 und 2 ebenfalls eine männliche Einleitung vorgeben
Beispiel:
Baustein 1 => Ich sehe einEN
Baustein 2 => witzigEN
Baustein 3 => Mann

Wie bekomme ich es am besten in meine App?
Meine Idee:
Am besten wäre es doch wenn die App per Zufallsgenerator erst den "Weg" auswählt ob weibliche, männliche oder sächliche Bausteine ausgeben werden sollen.
Dann generiert ein zweiter Zufallsgenerator, intern in dieser einen Sparte, neue Bausteine und gibt sie aus..

Was meint ihr?

Für Hilfe wäre ich sehr dankbar!

Viele Grüße
 
Eigentlich geht es nur darum deine drei Freiheitsgrade (Geschlecht, Satzteil, Stringnummer) in irgendeinem Datentyp zu speichern. Dafür gibt es tausende Lösungsmöglichkeiten, ich würde es wahrscheinlich mit Objekten machen.

Du hast ein Objekt Satzbaustein das einen String und eine Enum (männlich, weiblich neutrum) enthält. Dann brauchst du noch eine Enum, die festlegt um was für ein Satzbauteil es sich handelt oder du machst aus den einzelnen Satzbauteilen neue Objekte die von dem Objekt Satzbauteil erben.

Dann packst du die alle schön in Listen oder Arrays und kannst dann zufällig ein Objekt aus jeder Liste wählen bei der das Geschlecht passt.

Du könntest natürlich auch Vektoren oder 2D Arrays verwenden bei denen du in der zweiten Dimension das Geschlecht festhälst.

Wenn du ein 3D Array verwendest bekommst du deine ganzen Datein in ein einzelnes Array. Es wird dabei aber unnötig viel Speicher verschwendet, wenn du nciht für alle Satzteile gleich viele verschiedene mögliche Strings hast.
 
deine idee ist gut:

du kannst für die Endungen string constanten erstellen.
Code:
onCreate{
public static final String endungMaenlich = "en";

Wenn du dann beim maskulinen Weg bist machst du
Code:
Baustein1 + endungMaenlich;

Sollte eigentlich kein Problem sein.
 
Vielen, vielen Dank für eure Hilfe!

Ich werde es gleich ausprobieren.

Sobald bei mir der "Danke"-Button aktiviert ist, werde ich ihn bei euch beiden drücken! (Bin noch neu hier und da gibts den wohl noch nicht) Oo

Aber eine kleine Frage stellt sich für mich noch..
Ich habe bis dato mit Arrays gearbeitet. Das heißt ich müsste den letzten Satzbaustein als je nach Geschlecht klassifizieren.
Ist diese Klassifizierung unter Arrays möglich? Wenn ja wie bekomme ich sie in das Programm? :)

(ich bin absoluter Neuling)^^
 
Zuletzt bearbeitet:
Aus deinem bisherigen Array

final int ARRAY_LENGTH = 100;
String[] arrayName = new String[ARRAY_LENGTH];

wird dann

final int ARRAY_LENGTH = 100;
final int ARRAY_SEX_MALE = 0;
final int ARRAY_SEX_FEMALE = 1;
String[][] arrayName = new String[ARRAY_LENGTH][2];

Und damit bekommst du den weiblichen Eintrag an der stelle x:

arrayName[x][ARRAY_SEX_FEMALE];
 
Zuletzt bearbeitet:
Ich verstehe es immer noch nicht, wahrscheinlich werde noch das ein oder andere Tut anschauen müssen...

Java ist jedenfalls krass :-/

Trotzdem vielen Dank nochmal ;)
 
Mehrdimensionale Arrays sind eigentlich recht einfach. Für jede weitere Dimension hängst du einfach ein weiteres [] dahinter. Für 2D Arrays kannst du dir dass dann wie eine Matrix oder eine Tabelle vorstellen bei der zB die Spalten für die erste und die Zeilen für die zweite Dimension stehen (oder andersrum, wie du magst). Für höhere Dimensionen wird es dann schon schwerer vorstellbar.

Wie du schon geschrieben hast würde es sicher nicht schaden ein paar Tutorials anzuschauen. Viel Erfolg! ;)
 
Zurück
Oben Unten