2017-08-01 6 views
-2

Wie gebe ich den "toEncrypt" -Text durch die hashmap weiter und lasse ihn auf dem "verschlüsselten" Label erscheinen? Es stört mich eine Weile. Ich kann nur bekommen, was der Benutzer verschlüsselt auf dem Etikett anzeigen möchte, ohne verschlüsselt zu werden.Wie sende ich den Text über die HashMap?

@FXML 
Button encrypt; 
@FXML 
Label encrypted; 
@FXML 
TextField toEncrypt; 

@FXML 
private void encryptButton(ActionEvent event) { 
encrypted.setText(toEncrypt.getText()); 
} 

@FXML 
private void secretMessage (ActionEvent event) { 

    HashMap<String,String> secret = new HashMap<String, String>(); 


    //*****UPPER CASE LETTERS***** 
    secret.put("A","9"); 
    secret.put("B","J"); 
    secret.put("C","Q"); 
    secret.put("D","1"); 
    secret.put("E","T"); 
    secret.put("F","B"); 
    secret.put("G","Z"); 
    secret.put("H","R"); 
    secret.put("I","t"); 
    secret.put("J","m"); 
    secret.put("K","q"); 
    secret.put("L","p"); 
    secret.put("M","o"); 
    secret.put("N","3"); 
    secret.put("O","v"); 
    secret.put("P","y"); 
    secret.put("Q","X"); 
    secret.put("R","z"); 
    secret.put("S","l"); 
    secret.put("T","S"); 
    secret.put("U","5"); 
    secret.put("V","w"); 
    secret.put("W","C"); 
    secret.put("X","K"); 
    secret.put("Y","8"); 
    secret.put("Z","n"); 
    //********************** 


@Override 
public void initialize(URL url, ResourceBundle rb) { 
    // TODO 
}  
+0

"Text über eine HashMap senden" ist sinnlos. Bitte klären Sie Ihre Frage. – EJP

Antwort

1

Es wäre gut zu sehen, was Sie bereits versucht haben; Anstatt nur eine vollständige, funktionierende Antwort auf die Frage zu geben, werde ich nur auf ein paar Konzepte hinweisen, die dich in Gang bringen sollten.

Für den Schritt ‚durch die HashMap passieren‘, Sie über die char s in einem String wie so laufen kann:

final String toEncryptString = toEncrypt.getText(); 
final char[] encrypted = new char[toEncryptString.length()]; 
for (int i = 0; i < toEncryptString.length(); i++) { 
    final char c = toEncryptString.charAt(i); 
    final char e; 
    // TODO - Set 'e' from getting the value from the HashMap 
    encrypted[i] = e; 
} 
return new String(encrypted); 

Ich würde annehmen, dass Sie diese irgendwo sind einstellen, aber du bist nicht Setzen Sie die encryptButton Logik in den Code, den Sie freigegeben haben. Button hat eine setOnAction, die Sie sollten wie mit etwas zu nutzen, hier in der Lage sein:

encrypt.setOnAction(this::encryptButton); 

Sie nur irgendwo finden müssen diese Einstellung vornehmen, die wird immer ausgeführt werden, bevor Sie versuchen, die Button zu verwenden.

Schließlich wäre es nachlässig von mir, nicht zu erwähnen, dass die HashMap als Teil der Methode konstruiert scheint seltsam (es muss jedes Mal tun, wenn Sie versuchen, etwas zu verschlüsseln). Mit diesem Satz als ein Feld (oder ähnlich - static Feld, in Utility-Klasse versteckt, mit Zugang über static char getEncrypted(final char given) { return map.get(given); }) würde mehr performant sein (obwohl sicherstellen, dass Sie mit potentiellen null s in welcher Lösung Sie unterwegs sind, Umgang mit

Hoffentlich.

Verwandte Themen