我开发了一个小程序,它会将消息转换为加密形式。 我对此一无所知,为什么这不起作用。
public class Encrypt extends javax.swing.JFrame {
String OriginalMsg,EncryptedMsg;
public Encrypt() {
initComponents();
OriginalMsg = jTextArea1.getText().toString();
EncryptedMsg = jTextArea2.getText().toString();
}
public void action(int a){
if(a == 0){
StringBuffer sb = new StringBuffer(OriginalMsg);
for(int i = 0; i < sb.length(); i++){
int temp = 0;
temp = (int)sb.charAt(i);
temp = temp * 11;
sb.setCharAt(i, (char)temp);
EncryptedMsg = sb.toString();
}
jTextArea2.setText(EncryptedMsg);
}
else if(a == 1){
jTextArea1.setText("");
jTextArea2.setText("");
}
}
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt){
action(0);
}
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt){
action(1);
}
答案 0 :(得分:0)
如果该程序旨在加密用户在jTextArea1
中输入的内容(而不是initComponents()
中可能设置的某些值),则需要设置OriginalMsg
的值用户输入文本后的字段。
在action
方法的开头设置。
答案 1 :(得分:0)
您的构造函数将获取文本区域的值,它们始终为空。
至少你需要做出这些改变:
public Encrypt() {
initComponents();
}
public void action(int a){
if(a == 0){
OriginalMsg = jTextArea1.getText().toString();
EncryptedMsg = jTextArea2.getText().toString();
StringBuffer sb = new StringBuffer(OriginalMsg);
for(int i = 0; i < sb.length(); i++){
int temp = 0;
temp = (int)sb.charAt(i);
temp = temp * 11;
sb.setCharAt(i, (char)temp);
EncryptedMsg = sb.toString();
}
jTextArea2.setText(EncryptedMsg);
}
else if(a == 1){
jTextArea1.setText("");
jTextArea2.setText("");
}
}
这是关于字符串不变性的有用帖子: