0

我在 swing 中开发了一个小程序,它将消息转换为加密形式。我对此一无所知,为什么这不起作用。

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);
}
4

2 回答 2

0

如果程序旨在加密用户输入的任何内容jTextArea1(而不是可能设置的某些值initComponents()),则需要OriginalMsg在用户输入文本后设置字段的值。

在方法的开始处设置它action

于 2013-10-19T20:02:05.040 回答
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("");

    }
}

这是一篇关于字符串不变性的有用帖子:

Java中字符串的不变性

于 2013-10-19T20:02:28.180 回答