Assoziatives Array in Java

08/09/2008 - 15:46 von Filias Heidt | Report spam
Moin,
Ich habe in Python eine Programm zum dechiffrieren eines Codes mit der
Caesar Methode geschrieben. Für den Informatikunterricht muss ich jetzt
dieses Programm in Java umsetzen - habe aber das problem, dass ich in
Java keinen entsprechenden Datentyp für Dictionaries (assoziative
Arrays) habe, die Ich zum Zàhlen der hàufigkeit eines buchstabens benutze.
Hier mal ein Auszug aus meinem Python Quelltext:
line = "--"
def dechiffriere_caesar(geheim):
counter = dict()
values = list()
ergebnis = ""
for char in geheim:
if char in counter:
counter[char] += 1
else:
counter.update({char : 1})
values = counter.values()
values.sort(reverse = True)
for key in counter:
if counter[key] == values[0]:
print line
print "\"", key, "\"" " Ist der haeufigste Buchstabe mit: ",
counter[key], " malen!"
print line
most = key
break
most_int = ord(most)
e_int = ord("E")
verschiebung = most_int - e_int
print "haeufigster: ", most_int," (eintspricht: ", chr(most_int),")
|| Verschiebung: ", verschiebung
for char in geheim:
ascii = ord(char)
ascii -= verschiebung
dechiff = chr(ascii)
ergebnis += dechiff


... hoffe ihr habt Ideen ...
 

Lesen sie die antworten

#1 Diez B. Roggisch
08/09/2008 - 16:20 | Warnen spam
Filias Heidt wrote:

Moin,
Ich habe in Python eine Programm zum dechiffrieren eines Codes mit der
Caesar Methode geschrieben. Für den Informatikunterricht muss ich jetzt
dieses Programm in Java umsetzen - habe aber das problem, dass ich in
Java keinen entsprechenden Datentyp für Dictionaries (assoziative
Arrays) habe, die Ich zum Zàhlen der hàufigkeit eines buchstabens benutze.
Hier mal ein Auszug aus meinem Python Quelltext:
line = "--"
def dechiffriere_caesar(geheim):
counter = dict()
values = list()
ergebnis = ""


for char in geheim:
if char in counter:
counter[char] += 1
else:
counter.update({char : 1})



Das laesst sich deutlich kompakter als

counter[char] = counter.get(char, 1)

schreiben.

values = counter.values()
values.sort(reverse = True)
for key in counter:
if counter[key] == values[0]:
print line
print "\"", key, "\"" " Ist der haeufigste Buchstabe mit: ",
counter[key], " malen!"
print line
most = key
break
most_int = ord(most)
e_int = ord("E")
verschiebung = most_int - e_int
print "haeufigster: ", most_int," (eintspricht: ", chr(most_int),")
|| Verschiebung: ", verschiebung
for char in geheim:
ascii = ord(char)
ascii -= verschiebung
dechiff = chr(ascii)
ergebnis += dechiff


... hoffe ihr habt Ideen ...



Associative Arrays in Java implementieren das interface java.util.Map.
Meistens ist man mit HashMap gut bedient.

Diez

Ähnliche fragen