问题描述
/****题目说明:函数Rdata()实现从文件in.dat中读取一篇英文文章,存入到字符串数组string中,请编写函数CharRight(),其函数的功能是:以行为单位把字符串中的最后一个字符的ASCII值右移4位后加倒数第二个字符的ASCII值,得到最后一个新的字符,倒数第二个字符的ASCII值右移4位后加倒数第三个字符的ASCII值,得到倒数第二个新的字符,依次类推,一直处理到第二个字符,第一个字符的ASCII值加原最后一个字符的ASCII值,得到第一个新的字符,得到的新字符分别存放在原字符串对应得位置上。最后已处理的字符串仍按行重新存入字符串数组string中,最后调用函数Wdata(),把结果string输出到文件out1.dat中。原始数据文件存放的格式是:每行的宽度均小于80个字符(含标点符号和空格)。我的部分代码(java)如下:怎么处理以后的结果与原来一样啊????public static void change(String str[]){//str1=new String[100];int length=0;char ch;//保存每行的最后一个字符for(int i=0;i<str.length-1;i++){length=str[i].length();ch=(Character)(Object)str[i].charAt(str[i].length()-1);for(int j=length-1;j>0;j--){try{str[i].replace(str[i].charAt(j), (char)((str[i].charAt(j)>>4)+str[i].charAt(j-1)));str[i].replace(str[i].charAt(0), ch);}catch(StringIndexOutOfBoundsException e){e.printStackTrace();}}}}
解决方案
一个低级错误,String类的对象是不能被改变值的。str[i]=str[i].replace(str[i].charAt(0), ch); 你要用类似于这种操作才可以,重新赋值!