用户输入代码字和文本进行加密,程序应该将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
答案 0 :(得分:2)
输出数组的地址。你想要的内容。
数组没有用toString()
mwthod。
变化
rezult=Ctext.toString();
到
rezult=new String(Ctext);
同样适用于
rezult+=Ctext.toString();
=&GT;
rezult+=new String(Ctext);
答案 1 :(得分:0)
在Java中,对数组的默认toString()
操作是转换为内部标识符,这就是您所看到的。尝试使用:
rezult = new String(Ctext);
...
rezult += new String(Ctext);
或者,取决于你想要显示的内容(因为我不清楚Ctext
总是包含可显示的字符):
rezult = Arrays.toString(Ctext);
...
rezult += Arrays.toString(Ctext);
这将为您提供逗号分隔的字符值数组,用方括号括起来。
答案 2 :(得分:0)
您不能使用toString()将char数组转换为String。
使用tvMain.setText(new String(Ctext));