3

用户输入代码字和文本进行加密,程序应该在文本上加上XOR掩码-并恢复正常,但它只是戴上掩码并没有恢复正常外观,为什么?

public void onClick(View arg0) {
        code = etCode.getText().toString();
        text = etText.getText().toString(); 

        while(code.length()<text.length()){
            code+=code;
        }
        char[] Ccode = code.toCharArray();
        char[] Ctext = text.toCharArray();

        for(i=0;i<Ctext.length;i++){
            Ctext[i]^=Ccode[i];
        }

        rezult=Ctext.toString();

        for(i=0;i<Ctext.length;i++){
            Ctext[i]^=Ccode[i];
        }
        rezult+="\n";
        rezult+=Ctext.toString();
        tvMain.setText(rezult);
        }
    });

如果我输入code : code , text : text 它显示:

[C@40527808
[C@40527808 
4

3 回答 3

2

您输出数组的地址。你想要内容。数组没有有用toString()的 mwthod。

改变

rezult=Ctext.toString();

rezult=new String(Ctext);

同样的

rezult+=Ctext.toString();

=>

rezult+=new String(Ctext);
于 2013-01-20T16:53:54.483 回答
0

在 Java 中,对数组的默认toString()操作是转换为内部标识符,这就是您所看到的。尝试使用:

rezult = new String(Ctext);
...
rezult += new String(Ctext);

或者,取决于您要显示的内容(因为我不清楚Ctext始终包含可显示的字符):

rezult = Arrays.toString(Ctext);
...
rezult += Arrays.toString(Ctext);

这将为您提供一个逗号分隔的字符值数组,并用方括号括起来。

于 2013-01-20T16:52:45.120 回答
0

您不能使用 toString() 将 char 数组转换为字符串。

利用tvMain.setText(new String(Ctext));

于 2013-01-20T16:53:30.590 回答