java中字符数组和字码int的问题的

来源:百度知道 编辑:UC知道 时间:2024/05/22 09:46:23
赋值略
ch= (int)c[i];
ch=ch+i+1;
c[i]=(char)ch;
为什么c[i]的值不变

完整代码:

import javax.swing.JOptionPane;

public class lockone {

public static void main (String[] args)

{
String a,b;
char c [];
int ch,le,i;
a= JOptionPane.showInputDialog("请输入要加密的文本(1024字节内):");
le= a.length();
if(le>1024)
{JOptionPane.showMessageDialog(null,"你的文本超出长度。");
System.exit(0);
}

c=a.toCharArray();
for(i=0;i==le;i++)
{

ch= (int)c[i];
ch=ch+i+1;
c[i]=(char)ch;

}
b = java.util.Arrays.toString(c);
JOptionPane.showMessageDialog(null,"加密后:"+b,"ok",JOptionPane.INFORMATION_MESSAGE);
}
}
哦!!问题解决了,原来是for的问题
真傻,一直以为是转型的问题!!~
现在看谁写出解密程序,分就给谁!!!!!!!!!~~~~~~~~~~~~~·

很谢谢freish的提醒,这个ch好像

你的c是16位的,ch是32位的,ch转换成c只是把高16截掉了而已
如一个二进制数
0001 1110 1111 0000 1110 1100 0000 0000

0111 0000 1111 0011 1110 1100 0000 0000

以上两个数转换成char的时候,只是把前面的16位去掉了而已,所以如果前面改变是不影响强制转换的结果的,结果都是1110 1100 0000 0000

而你的ch=ch+i+1;可能恰好改变了其高16位,你可以换成二进制看看