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好像
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位,你可以换成二进制看看