黑马程序员技术交流社区

标题: 关于System.arraycopy的问题(完成) [打印本页]

作者: 王琪    时间: 2014-2-28 13:23
标题: 关于System.arraycopy的问题(完成)
本帖最后由 王琪 于 2014-3-1 15:04 编辑

  1. import java.util.*;
  2. public class Text2 {
  3.         static void fun(char[] s){
  4.                 char []b="AAA".toCharArray();
  5.                System.arraycopy(s, 0,b ,0, 2);
  6.                 s="BBB".toCharArray();
  7.                
  8.         }
  9.         public static void main(String[]args){
  10.                char []s="QQQ".toCharArray();
  11.                 fun(s);
  12.                System.out.println(new String(s));
  13.         }
  14. }
复制代码

结果为什么是
[code]QQQ[/code]

  1. import java.util.*;
  2. public class Text2 {
  3.         static void fun(char[] s){
  4.                 char []b="AAA".toCharArray();
  5.                System.arraycopy(s, 0,b ,0, 2);
  6.                 s[0]='3';               
  7.         }
  8.         public static void main(String[]args){
  9.                char []s="QQQ".toCharArray();
  10.                 fun(s);
  11.                System.out.println(new String(s));
  12.         }
  13. }
复制代码


结果却是
  1. 3QQ
复制代码

到底怎么通过函数把字符串改变啊?真要一个一个通过索引改变?

  1. import java.util.*;
  2. public class Text2 {
  3.         static void fun(String s){
  4.                 s="AAAjhdskjhakjdfhkashkj...";            
  5.         }
  6.         public static void main(String[]args){
  7.                String s="";
  8.                 fun(s);
  9.                System.out.println(new String(s));
  10.         }
  11. }
复制代码

作者: kira    时间: 2014-2-28 13:28
第一个问题因为这句话
  1. char []s="QQQ".toCharArray();
  2.                 fun(s);
复制代码

第二个问题 因为这句话
  1. s[0]='3';   //定义首角标
复制代码

第三个问题 可以用正则 replaceAll方法 会简单很多
作者: 王琪    时间: 2014-2-28 22:21
谢谢你 我做出来了 用集合
  1. import java.util.*;

  2. public class text {
  3.         static ArrayList<Character> ary=new ArrayList();
  4.         static ArrayList<Character> abit = new ArrayList();
  5.         public static void main(String[]args){
  6.                 //
  7.                 char[] bit ="0123456789ABCDEF".toCharArray();
  8.                 Tianjia(abit,bit);
  9.                 Tianjia(ary,"".toCharArray());System.out.println(ary.size());
  10.                 int old,base;
  11.                 Scanner in=new Scanner(System.in);
  12.                 System.out.println("输入十进制数:");
  13.                 old=new Integer(in.next().trim());
  14.                 System.out.println("要转换的制数:");
  15.                 base=new Integer(in.next().trim());
  16.                 fun(ary,old,base);
  17.                 System.out.println(ary);
  18.                
  19.         }
  20.         static void fun(ArrayList <Character>ary ,int n,int b){
  21.                 int len;
  22.                 if (n==0){
  23.                         copy(ary,0 ," ",0 );
  24.                         return ;
  25.                 }
  26.                 fun(ary,n/b,b);
  27.                 len=ary.size();
  28.                 ary.add(abit.get(n%b));
  29.         }
  30.         static void Tianjia(ArrayList<Character> J,char a[]){
  31.                 for(char c:a){
  32.                         J.add(c);
  33.                 }
  34.                 System.out.println(J);
  35.         }
  36.         static void copy(ArrayList a,int begin1,String s,int begin2){
  37.                 char ch[]=new String (s.toCharArray(),begin2,s.length()-1).toCharArray();
  38.                 for(int i:ch){
  39.                         a.set(i,ch[i]);                       
  40.                 }
  41.         }
  42. }
复制代码



  1. [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F]
  2. []
  3. 0
  4. 输入十进制数:
  5. 121
  6. 要转换的制数:
  7. 2
  8. 复[]
  9. [1, 1, 1, 1, 0, 0, 1]
复制代码








欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2