如何通过HashMap发送文本?
问题描述:
如何通过hashmap传递“toEncrypt”文本并将其显示在“encrypted”标签上?这一直困扰着我。我只能得到用户想要加密的内容,而不需要加密。如何通过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
}
答
很高兴看到你已经尝试过;所以我不仅仅提供了一个完整的工作答案,我只是想指出一些应该让你去做的概念。
对于“通过HashMap
”步骤中,您可以在String
遍历char
就像这样:
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);
我会假设你设置这个地方,但你不在您共享的代码中设置encrypt
Button
的逻辑。 Button
有setOnAction
,你应该能够与像这里使用:
encrypt.setOnAction(this::encryptButton);
你只需要找个地方设置此将总是运行您尝试使用Button
之前。
最后,我没有提及将HashMap
构建为方法的一部分似乎很奇怪(每次尝试加密某些东西时都必须这样做),这将是我的疏忽。有了这一套作为字段(或类似 - static
场,隐藏在实用程序类,通过static char getEncrypted(final char given) { return map.get(given); }
访问)将是更高性能的(尽管确保你在你去任何溶液处理潜在null
小号
希望。那会让你开始吧
'通过HashMap发送文本'没有意义,请澄清你的问题。 – EJP