Skip to content
GitLab
Explore
Sign in
Register
Primary navigation
Search or go to…
Project
E
Enigma
Manage
Activity
Members
Labels
Plan
Issues
0
Issue boards
Milestones
Wiki
Code
Merge requests
0
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Container Registry
Model registry
Operate
Environments
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Dennis Eisold
Enigma
Commits
542f774c
Commit
542f774c
authored
5 years ago
by
Dennis Eisold
Browse files
Options
Downloads
Patches
Plain Diff
Morsecode Klasse fertig gestellt
parent
2bbd3c95
No related branches found
No related tags found
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
src/main/java/Enigma/model/Morsecode.java
+128
-38
128 additions, 38 deletions
src/main/java/Enigma/model/Morsecode.java
with
128 additions
and
38 deletions
src/main/java/Enigma/model/Morsecode.java
+
128
−
38
View file @
542f774c
package
Enigma.model
;
import
java.util.TreeMap
;
import
java.util.*
;
import
java.util.Map.Entry
;
/**
* Diese Klasse definiert die Zugehörigkeit zwischen den Buchstaben A-Z und dem zugehörigen Morsecode.
* Die Funktionen sollen Texte von und zu Morsecode konvertieren.
*/
public
class
Morsecode
{
TreeMap
<
String
,
String
>
codeMap
=
new
TreeMap
<>();
// Anlegen der codeMap als TreeMap
private
TreeMap
<
String
,
String
>
codeMap
=
new
TreeMap
<>();
/**
* Im Konstruktor werden alle Notwendigen Zeichen und deren zugehöriger Codes, der Treemap hinzugefügt.
* Im Konstruktor werden alle verfügbaren Buchstaben (A-Z) und deren zugehörigen
* Morsecodes, der codeMap hinzugefügt.
*/
public
Morsecode
()
{
codeMap
.
put
(
"A"
,
"10110"
);
codeMap
.
put
(
"B"
,
"110101010"
);
codeMap
.
put
(
"C"
,
"1101011010"
);
codeMap
.
put
(
"D"
,
"1101010"
);
codeMap
.
put
(
"E"
,
"10"
);
codeMap
.
put
(
"F"
,
"101011010"
);
codeMap
.
put
(
"G"
,
"11011010"
);
codeMap
.
put
(
"H"
,
"10101010"
);
codeMap
.
put
(
"I"
,
"1010"
);
codeMap
.
put
(
"J"
,
"10110110110"
);
codeMap
.
put
(
"K"
,
"11010110"
);
codeMap
.
put
(
"L"
,
"101101010"
);
codeMap
.
put
(
"M"
,
"110110"
);
codeMap
.
put
(
"N"
,
"11010"
);
codeMap
.
put
(
"O"
,
"110110110"
);
codeMap
.
put
(
"P"
,
"1011011010"
);
codeMap
.
put
(
"Q"
,
"11011010110"
);
codeMap
.
put
(
"R"
,
"1011010"
);
codeMap
.
put
(
"S"
,
"101010"
);
codeMap
.
put
(
"T"
,
"110"
);
codeMap
.
put
(
"U"
,
"1010110"
);
codeMap
.
put
(
"V"
,
"101010110"
);
codeMap
.
put
(
"W"
,
"10110110"
);
codeMap
.
put
(
"X"
,
"1101010110"
);
codeMap
.
put
(
"Y"
,
"11010110110"
);
codeMap
.
put
(
"Z"
,
"1101101010"
);
// KA - Spruchanfang
codeMap
.
put
(
"KA"
,
"1101011010110"
);
// AR - Spruchende
codeMap
.
put
(
"AR"
,
"101101011010"
);
// VE - Verstanden
codeMap
.
put
(
"VE"
,
"10101011010"
);
// SK - Verkehrsende
codeMap
.
put
(
"SK"
,
"10101011010110"
);
this
.
codeMap
.
put
(
"A"
,
".-"
);
this
.
codeMap
.
put
(
"B"
,
"-..."
);
this
.
codeMap
.
put
(
"C"
,
"-.-."
);
this
.
codeMap
.
put
(
"D"
,
"-.."
);
this
.
codeMap
.
put
(
"E"
,
"."
);
this
.
codeMap
.
put
(
"F"
,
"..-."
);
this
.
codeMap
.
put
(
"G"
,
"--."
);
this
.
codeMap
.
put
(
"H"
,
"...."
);
this
.
codeMap
.
put
(
"I"
,
".."
);
this
.
codeMap
.
put
(
"J"
,
".---"
);
this
.
codeMap
.
put
(
"K"
,
"-.-"
);
this
.
codeMap
.
put
(
"L"
,
".-.."
);
this
.
codeMap
.
put
(
"M"
,
"--"
);
this
.
codeMap
.
put
(
"N"
,
"-."
);
this
.
codeMap
.
put
(
"O"
,
"---"
);
this
.
codeMap
.
put
(
"P"
,
".--."
);
this
.
codeMap
.
put
(
"Q"
,
"--.-"
);
this
.
codeMap
.
put
(
"R"
,
".-."
);
this
.
codeMap
.
put
(
"S"
,
"..."
);
this
.
codeMap
.
put
(
"T"
,
"-"
);
this
.
codeMap
.
put
(
"U"
,
"..-"
);
this
.
codeMap
.
put
(
"V"
,
"...-"
);
this
.
codeMap
.
put
(
"W"
,
".--"
);
this
.
codeMap
.
put
(
"X"
,
"-..-"
);
this
.
codeMap
.
put
(
"Y"
,
"-.--"
);
this
.
codeMap
.
put
(
"Z"
,
"--.."
);
}
public
void
getCode
(
char
sign
)
{
/**
* Diese Funktion überprüft ob das übergebene Buchstabe in der codeMap enthalten ist.
* Wenn es enthalten ist, wird der zugehörige Morsecode zurück gegeben, ansonsten null
*
* @param buchstabe : char : Zu übersetzender Buchstabe
* @return : String : Das zugehöriger Morsecode aus der codeMap
*/
private
String
getMorsecode
(
char
buchstabe
)
{
// Testen ob das Char in der codeMap enthalten ist. Wenn ja, raussuchen und zurück geben
return
this
.
codeMap
.
getOrDefault
(
String
.
valueOf
(
buchstabe
).
toUpperCase
(),
null
);
}
/**
* Der übergebene String wird in seine einzelnen Zeichen (char) zerlegt und an die Funktion getMorsecode
* übergeben und der zugehörige Morsecode raus gesucht.
* Mittels eines StringBuilders werden die Ergebnisse zu einem Rückgabe String zusammen gesetzt.
* Wenn kein zugehöriger Code in der codeMap gefunden wurde, wird das Zeichen ignoriert da es bei der
* Enigma nicht vorhanden war.
*
* @param input : String : Zu konventierender Text
* @return String : Die in Morsecode konvertierte Text
*/
public
String
convertBuchstabeToMorsecode
(
String
input
)
{
StringBuilder
sb
=
new
StringBuilder
();
String
morsecode
;
// Durch alle char im übergebenen String loopen
for
(
int
i
=
0
;
i
<
input
.
length
();
i
++)
{
// Wenn der char in der codeMap enthalten ist, an den Rückgabe String anheften, ansonsten nichts ignorieren.
morsecode
=
this
.
getMorsecode
(
input
.
charAt
(
i
));
if
(
morsecode
!=
null
)
{
sb
.
append
(
morsecode
).
append
(
' '
);
}
}
// Gibt den konvertierten String zurück
return
sb
.
toString
();
}
/**
* Diese Funktion überprüft ob der übergebene Morsecode in der codeMap enthalten ist.
* Wenn er enthalten ist, wird der zugehörige Buchstabe zurück gegeben, ansonsten null
*
* @param morsecode : String : Der zu übersetzende Morsecode
* @return : String : Das zugehöriger Buchstaben aus der this.codeMap
*/
private
String
getBuchstabe
(
String
morsecode
)
{
// Initialisieren des Rückgabe Strings
// TODO: Darf bei der Initialisierung gleich einen Wert setzten lauf JAVA Konventionen?
String
result
=
null
;
// Loopt duch die Codemap und erstellt daraus ein Set
for
(
Entry
<
String
,
String
>
entry
:
this
.
codeMap
.
entrySet
())
{
// Wenn Value dem Morsecode entspricht, haben wir unseren Buchstaben gefunden und setzen ihn als Result
if
(
entry
.
getValue
().
equals
(
morsecode
))
{
result
=
entry
.
getKey
();
}
}
return
result
;
}
/**
* Der übergebene String wird in einen String Array zerlegt. Als Trennzeichen wird das Leerzeichen genutzt.
* Anschließend wird der Array durchlaufen und die Elemente an die Funktion getBuchstabe übergeben um den
* zugehörigen Buchstaben zu erhalten.
* Mittels eines StringBuilders werden die Ergebnisse zu einem Rückgabe String zusammen gesetzt.
* Wenn kein zugehöriger Buchstabe in der codeMap gefunden wurde, wird das Zeichen ignoriert da es bei der
* Enigma nicht vorhanden war.
*
* @param input : String : Zu konventierender Morsecode
* @return String : Der in Text konvertierte Morsecode
*/
public
String
convertMorsecodeToBuchstabe
(
String
input
)
{
StringBuilder
sb
=
new
StringBuilder
();
String
buchstabe
;
String
[]
morsecodes
=
input
.
split
(
" "
);
// Durch alle char im übergebenen String loopen
for
(
String
morsecode
:
morsecodes
)
{
// Wenn der char in der codeMap enthalten ist, an den Rückgabe String anheften, ansonsten nichts ignorieren.
buchstabe
=
this
.
getBuchstabe
(
morsecode
);
if
(
buchstabe
!=
null
)
{
sb
.
append
(
buchstabe
).
append
(
' '
);
}
}
// Gibt den konvertierten String zurück
return
sb
.
toString
();
}
}
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment