Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > Java
You last visited: Today at 14:18

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



Java Worvervollständigung

Discussion on Java Worvervollständigung within the Java forum part of the Coders Den category.

Reply
 
Old   #1
 
elite*gold: 0
Join Date: Nov 2008
Posts: 227
Received Thanks: 17
Java Worvervollständigung

Hallo,

ich arbeite gerade an einer Bildschirmtastatur und jetzt wird darüber nachgedacht eine Auto Wortvervollständigung oder wie beim Navi das nicht mehr mögliche Buchstaben ausgegraut werden zum Implementieren. Hat da jemand ahnung von? Irgendwelche ansetzte oder Tutorial in der richtig die mir helfen könnten?
QFireball is offline  
Old 05/22/2017, 14:25   #2
 
Skriptum's Avatar
 
elite*gold: 0
Join Date: Oct 2010
Posts: 2,506
Received Thanks: 257
Ansatz wäre z.B. du hast eine Liste mit Wörter, am besten noch zu jedem Wort ein Wert der angibt wie das Wört zu priorisieren ist. Und nach jeder Eingabe der Bildschirmtastatur wird über diese Liste iteriert und die passenden Wörter entsprechend der Priorisierung angezeigt. Musst halt überprüfen, ob der bisherige String in den Wörter in der Liste enthalten ist.
Das wäre das Grundprinzip. Könnte evtl. performance Probleme geben, aber da würde ich mir an deiner Stelle erstmal später Gedanken machen. Da gibt es einige Wege das Problem zu lösen.

Am besten erstmal mit ein paar Wörter ausprobieren und die Funktionalität herstellen.
Skriptum is offline  
Old 05/22/2017, 14:43   #3
 
elite*gold: 0
Join Date: Nov 2008
Posts: 227
Received Thanks: 17
Wäre es möglich auch die liste in eine externe datei aus zu lagern? Mein Gedanke war das ich immer das was schon geschrieben wurde mit der liste vergleiche und dann die Buchstaben sperre die unterhalb dieser wörter als nächstes nicht mehr vorkommt. Das wäre dann der Navi Ansatz. Müsste doch theoretisch leichter sein oder? Problem ist halt das ich dafür nicht mehr als 8 Wochen zeiz hätte dann muss es laufen oder es wird erstmal nicht umgesetzt.
QFireball is offline  
Old 05/22/2017, 14:51   #4
 
Skriptum's Avatar
 
elite*gold: 0
Join Date: Oct 2010
Posts: 2,506
Received Thanks: 257
Quote:
Originally Posted by QFireball View Post
Wäre es möglich auch die liste in eine externe datei aus zu lagern? Mein Gedanke war das ich immer das was schon geschrieben wurde mit der liste vergleiche und dann die Buchstaben sperre die unterhalb dieser wörter als nächstes nicht mehr vorkommt. Das wäre dann der Navi Ansatz. Müsste doch theoretisch leichter sein oder? Problem ist halt das ich dafür nicht mehr als 8 Wochen zeiz hätte dann muss es laufen oder es wird erstmal nicht umgesetzt.
Klar, du kannst die Wörter auch in einer externen Liste speichern.
Dann muss dein Programm diese Liste auslesen und aus jedem Eintrag am besten ein Objekt machen und das dann in einer Liste bereithalten.
Die Objekte sollten dann als Klassenvariablen das Wört als String und evtl ein Integer, der die Priorisierung angibt, enthalten.
Skriptum is offline  
Old 05/22/2017, 22:10   #5
 
elite*gold: 0
Join Date: May 2015
Posts: 700
Received Thanks: 445
Hast du bei dem Ansatz keine Bedenken? Immerhin können dann nur noch Wörter eingegeben werden, die in der Liste vorkommen. Das macht Sinn, wenn das Programm mit anderen Wörtern ohnehin nichts anfangen kann (Navi), in anderen Fällen aber nicht (vor allem in freien Texten). Macht das für dein Programm Sinn?

Ich denke, das geht noch effizienter als mit der Liste. Spontane Idee: Du baust einen Baum auf, so, dass jede Kante mit einem Buchstaben beschriftet ist. Dann entspricht jedes Blatt (bzw. auch nicht Blatt) dem Wort, das man bekommt, wenn man die Buchstaben auf dem Pfad zur Wurzel aneinander hängt (gelesen von Wurzel zu Blatt).
Den Baum musst du für eine Liste an Wörtern nur einmal aufbauen und kannst ihn dann speichern; er braucht nicht wesentlich mehr Speicherplatz als die Liste selber und vor allem: Du kannst in konstanter Zeit (bzw. Alphabetgröße) entscheiden, welche Buchstaben als nächstes noch eingegeben werden dürfen, denn dazu musst du nur die ausgehenden Kanten vom aktuellen Knoten traversieren. Wenn dann der nächste Buchstabe kommt, gehst du die Kante mit entsprechender Beschriftung entlang und setzt den neuen Knoten als aktuellen Knoten.

Edit:
Code:
Type on of: " # $ % & ' ( ) * - . 0 1 2 3 4 5 6 7 8 9 < > @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ ] a b c d e f g h i j k l m n o p q r s t u v w x y z } ~ Ä É Ö Ü ß à ä ö ü Œ Δ α β δ η μ π σ ‰ € 
W
You typed: W
Type on of: - C D E G H K M R S T W a e h i l o r u ä ö ü 
e
Type on of: a b c d e g h i l m n r s t y 
l
Type on of: c l p s t 
t
You typed: Welt
Type on of:   a b c e f g h k l m o p r s t u v w 
e
Type on of: n 
n
Type on of: b d i l 
b
Type on of: e r u 
e
Type on of: r 
r
Type on of: g 
g
You typed: Weltenberg
No more words with this prefix; abort
Braucht einmal am Anfang, bis der Suchbaum aufgebaut ist (den man, einmal aufgebaut, auch speichern könnte); ab dann sehr effizient.
algernong is offline  
Thanks
1 User
Old 05/23/2017, 12:42   #6
 
Zunft's Avatar
 
elite*gold: 0
Join Date: Mar 2013
Posts: 3,184
Received Thanks: 1,317
Auch wenn du schon einen Ansatz hast, ich würde mit SQL arbeiten (in der lokalen Umgebung mit SQLite). Hier kannst du mit einfachsten Mitteln dein Ziel erreichen. Eine Datenbank ist um einiges schneller als den Text einer Datei zu lesen. Hier ein Beispiel:

Eine einfache Datenbank gefüttert mit deinen zu vervollständigen Städten/Orten/etc. Hier in simpelster Form:

IDWert
1Weissbrot
2Schwarzbrot
3Brotmesser
4Broetchen

Wir möchten gerne das Wort "Brot" vervollständigen (nach "links" und "rechts").

Das übernimmt für uns eine SQL Abfrage:

Code:
SELECT WERT FROM test_auto_fill WHERE WERT LIKE '%brot%';
Die '%'-Zeichen sind hier sogenannte Wildcards.

Resultat:

Wert
Weissbrot
Schwarzbrot
Brotmesser
Zunft is offline  
Reply


Similar Threads Similar Threads
[JAVA Error] Could not create the java virtual machine
07/21/2013 - Technical Support - 10 Replies
Schönen Abend! Leider hat es sich aus einem unerfindlichen Grund ergeben, dass sobald ich die Minecraft.exe starten will die Errormeldung kommt. Die Tips auf Minecraft.net habe ich schon ohne Erfolg befolgt. Hoffe ihr könnt mir weiterhelfen... Mein PC:
java virtual machine launcher could not create the java virtual machine
08/29/2011 - Minecraft - 5 Replies
Wie der Titel schon sagt ist bei mir plötzlich folgendes Problem aufgetreten Minecraft ging immer perfekt, dann wollte ich den millionaire minecraft mod installieren und seit dem kommt immer diese fehler meldung: java virtual machine launcher could not create the java virtual machine minecraft deinstalliert aber ich kann es nicht mehr installieren da die Meldung immer kommt wenn ich auch Minecraft.exe klicke ich habe windows xp und davor lief es immer perfekt das mit der .bat datei...
[Java] Could not create the Java virtual machine
06/22/2011 - Minecraft - 1 Replies
hallo ihr minecraftler ^^ habe seit heute das problem das wenn ich minecraft starte original als auch cracked das diese fehlermeldung kommt: Java virtual machine Launcher Could not create the Java virtual machine



All times are GMT +2. The time now is 14:18.


Powered by vBulletin®
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2024 elitepvpers All Rights Reserved.