Android Theorie: Umwandeln von Text in Morsecode

L0g4n

Mitglied
Hey Leute,

ich will auf Android normalen Text in Morsecode "umwandeln" lassen.
D.h. jmd. schreibt normalen Text in ein Feld, im anderen Feld wird der fertige dementsprechende Morsecode dazu ausgespuckt.

Ich weiß, dass ich dazu das Morsealphabet als Ressource irgendwo speichern soll.
Meine Idee wäre, das ganze einfach als String Array anzulegen, und dann mit den entsprechenden Symbolen zu füllen.

Da ich noch Anfänger bin, wollte ich nur fragen, ob das so in Ordnung ist und auch empfehlenswert ist, oder ob es noch einen anderen, vielleicht leichteren Weg gibt.

Danke im Voraus!

LG
 

ChristianK

Aktives Mitglied
Ich denke, ein String-Array passt ziemlich gut. Die Länge des Morse-Alphabets ist definiert und terminiert, d.h., da "ändert sich nichts". Somit darfst du es (m.M.n.) auch fix in den Code einprogrammieren.
 

L0g4n

Mitglied
Okay, danke für deine Antwort!
So hatte ich mir das ganze auch gedacht, da das ganze ja "fix" ist, lohnt sich eine Datenbank o.Ä.
hier nicht.

LG
 

L0g4n

Mitglied
Hallo,

danke für deine Antwort. Wie gesagt, bin ich noch Anfänger, könntest du mir vielleicht erklären, wie ich das auf mein Beispiel oben anwenden kann ?

LG
 

Tobse

Top Contributor
Ein
Code:
String[]
macht eine
Code:
int => String
Zuordnung. Dann müsstest du jedes Zeichen aus dem Eingabefeld erst in einen int umrechnen was bei komischen Zeichen (solche, die das Morse-Alphabet nicht kennt, etwa $ oder }) schnell zu Problemen führt.
Eine HashMap kann dir eine
Code:
Character => String
Zuordnung bereitstellen. Dann musst du nornoch für jeden
Code:
char
in deinem Eingabefeld prüfen, ob er in der HashMap ist und ggf. eine Meldung ausgeben, wenn er es nicht ist.

Siehe dafür diese Links:
[JAPI]java.lang.String#toCharArray()[/JAPI]
[JAPI]java.lang.Character[/JAPI]
[JAPI]java.util.HashMap[/JAPI]
Lesson: Generics (Updated) (The Java™ Tutorials > Learning the Java Language)
 

L0g4n

Mitglied
Hmm, verstehe, das ganze ist dann also so etwas in der Art wie ein assotiatives Array in PHP.
Jetzt gibt es natürlich nur das Problem, wenn ich so eine HashMap mit dem Morsealphabet anlege, dass gleich in 3 Activitys von mir gleichzeitig bereit stehen muss. Jedoch will ich das nicht in jeder Activity neu deklarieren.

Weißt du, wie ich dieses Problem lösen kann ?

LG
 

Tobse

Top Contributor
Hmm, verstehe, das ganze ist dann also so etwas in der Art wie ein assotiatives Array in PHP.
So ziemlich das selbe, ja. Ein PHP-Array ist PHP-Intern das selbe wie eine
Code:
HashMap<Object,Object>
.

Jetzt gibt es natürlich nur das Problem, wenn ich so eine HashMap mit dem Morsealphabet anlege, dass gleich in 3 Activitys von mir gleichzeitig bereit stehen muss. Jedoch will ich das nicht in jeder Activity neu deklarieren.

Weißt du, wie ich dieses Problem lösen kann ?

Globale Variablen sind eigentlich Bad-practice in Java. Aber alle anderen Möglichkeiten für solche Belange sind auch nicht gerade elegant. Deshalb lege ich meisst eine Klasse namens
Code:
Resources
an die alle Daten lädt, die an vielen Stellen gebraucht werden (Sprachdateien, Icons usw):
Java:
package resources;

public abstract class Resources
{
    public static final HashMap<String,String> MORSE_ALPHABET = new HashMap<String,String>();

    static
    {
        MORSE_ALPHABET.put(...);
        ...
    }
}
 
Zuletzt bearbeitet:

Tobse

Top Contributor
Wobei die Einteilung in ein String-Array nach Schema (Buchstabennr.)->(wert) nicht kreuzfalsch sein wird. A=0, b=1, c=2, ...

Sicherlich nicht, sie ist sogar performanter und braucht nicht halb so viel Speicher im RAM. Aber das umrechnen der ANSII-Werte in passende Indexe für das Array (sodass keine Kollisionen oder ArrayIndexOutOfBounds auftreten) hab ich unserem "Anfänger" nicht aus dem Stehgreiff zugemutet.
 

L0g4n

Mitglied
Danke,

kannst du mir nochmals sagen, wofür der static { } Abschnitt in der Abstrakten Klasse steht ?
Ich wusste es mal, bin mir aber nicht mehr sicher, ist das nicht so was wie eine Art "Konstruktor" ?

LG
 
Zuletzt bearbeitet:

Tobse

Top Contributor
Nein, ein Konstruktor ist es nicht. Der Code im
Code:
static {}
-Block wird ausgeführt, wenn die Klasse in die JVM geladen wird. Genauer: Nachdem die static-variablen initialisiert wurden.
 

kurztipp

Aktives Mitglied
Hallo,

warum nicht als eigene public static class? Dann die HashMap oder was auch immer als static member und noch statische Methoden zum umrechnen?
Dann geht die HashMap auch als private, wenn man sich die Klasse um die Codierung kümmert.

Gruß
 

L0g4n

Mitglied
Hallo,

nochmals eine Frage, da ich noch ein Problem habe.
Wenn ich nun das ganze ausgebe ist das vollkommen unsortiert, d.h. nicht mehr in der Reihenfolge, in der ich es eigentlich hinzugefügt habe (chronologisch, von A bis Z, 0 - 9).

In der API Dokumentation von HashMap habe ich keine Methode zum Sortieren gefunden.

Weiß jemand, wie ich das ganze wieder sortieren kann ?

LG
 

Tobse

Top Contributor
HashMaps sind grundsätzlich unsortiert und lassen sich auch nicht sortieren. Wozu brauchst du denn die sortierung?
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
W JSONARRAY per Intent an andere Activity übergeben und umwandeln ggbf. Android & Cross-Platform Mobile Apps 1
F Images in Video umwandeln Android & Cross-Platform Mobile Apps 0
B Accelerometer daten umwandeln Android & Cross-Platform Mobile Apps 41
B Java PC Spiel fürs Handy umwandeln? Android & Cross-Platform Mobile Apps 8
W Text input into editText Android & Cross-Platform Mobile Apps 2
W Edit Text Drawable Icon ändern plus Funktion Android & Cross-Platform Mobile Apps 30
R Google Text-to-Speech Android & Cross-Platform Mobile Apps 5
R wie verwende ich Cloud Text-to-Speech? Android & Cross-Platform Mobile Apps 4
R Android Text-To-Speech Android & Cross-Platform Mobile Apps 4
ruutaiokwu Android In einem Android-“Spinner”-Element GLEICHZEITIG Bild (links) UND Text (rechts) anzeigen Android & Cross-Platform Mobile Apps 0
J Android App - Browser öffnen und Text eingeben/Button click auslösen Android & Cross-Platform Mobile Apps 10
M ImageButton: Bild ausblenden und Text anzeigen Android & Cross-Platform Mobile Apps 2
Flynn Text-File auf externe Speicherkarte schreiben Android & Cross-Platform Mobile Apps 1
F Aufkalbbaren Text Android & Cross-Platform Mobile Apps 4
B Android Text von Android zu PC senden? Android & Cross-Platform Mobile Apps 5
C Android Bei Text "Popup" anzeigen Android & Cross-Platform Mobile Apps 2
Anfänger2011 Text to Speech Problem Android & Cross-Platform Mobile Apps 1
M Android Edittext width passend zum Text Android & Cross-Platform Mobile Apps 1
R Android Layout Bild mit Text Android & Cross-Platform Mobile Apps 13
N Android Änderung von tabwidget height lässt text verschwinden Android & Cross-Platform Mobile Apps 3
L Android Text aus Textfeld speichern Android & Cross-Platform Mobile Apps 5
J in android app text automatisch kopieren Android & Cross-Platform Mobile Apps 2
S Android Zufällige Text wiedergabe Android & Cross-Platform Mobile Apps 6
G Android zur Laufzeit den Text im Menü ändern Android & Cross-Platform Mobile Apps 3
K Android schwarzer Bildschirm beim Rendern von Text und Dreiecken Android & Cross-Platform Mobile Apps 9
S Android Canvas - drawText - Update Text in ActionListener Android & Cross-Platform Mobile Apps 8
N Gibt es eine opensource Speech-to-Text engine? Android & Cross-Platform Mobile Apps 3
M Text in txt-Datei schreiben und nach ABC sortieren? Android & Cross-Platform Mobile Apps 2
M Text in Canvas scrollen lassen Android & Cross-Platform Mobile Apps 13
G Text parsen String to Double Android & Cross-Platform Mobile Apps 2

Ähnliche Java Themen

Neue Themen


Oben