this.cl[] = new int[n];
this.c2[] = new int[n];

解决方案 »

  1.   

    cl[] = new int[n];
    c2[] = new int[n];
      

  2.   

    你用new就没辙了,除非你换数据结构,在fun1不要new
      

  3.   

    这个问题很容易解决:
    如果在同一个类里面,那么可以声明
    public class A{
      private int c1[],c2[];
      public void func1(){
         //修改c1,c2
      } 
    }
    这样保证在这个类A里面的成员变量c1[],c2[]的变化是全局的。
    如果在不同的类里面,那么可以这样
    public class B{//声明一个类B,我们要修改B中的变量c1[],c2[]
       public int c1[],c2[];}
    public class A{//声明一个类A,在这个类中修改类B中的成员变量。
       private B  b;
       public A(B b){//在构造函数中把要修改的类B的实例b传递进来
         this.b=b;
       }
       public void func1(){
         //修改b.c1[],b.c2[]    在这里引用c1[],c2[]
       }
    }
    方式就是这样,具体的地方可能有错误,你试试就知道了
      

  4.   

    我有两种解决方案,第一种是把数组换成ArrayList或者其他Collection类,
    这样,当类传递时,传的是引用,所以在方法内的改变会被带出去。另一种方案是自己再写一个类来封装两个数组,然后传参数的时候传递这个类就可以了,
    总之,只要传递的是类就可以。
    class ArrayClass{
      public int c1[], c2[];
    }public Class TestClass{
      public funcl(ArrayClass ac){
        ac.c1=new int[10];
        ac.c2=new int[10];
      }
      

  5.   

    关键的关键,还是不能用new!就算你传进去引用又怎么样?我先new一下,然后操作,一样不会改变!
      

  6.   

    你可以将变量的封装等级设为friendly,这样只要在同一个包下面的程序都可以改变变量
      

  7.   

    谢谢大家的回答,根据我现在的需要,我可能会改用集合类吧,把new方法替换成对集合类的相应方法操作。
    如果使用一个包装类的话岂不是强迫我在内部,改变我的数据接口,往往传入的两个变量也不是那么紧密相关的。
    看来对于java语言来说,这一点并不方便...明早揭帖。谢谢各位
      

  8.   

    使用集合类也是一个解决办法,而且如果你是要改变一组值那集合就是最好的选择
    如果是想使用类似C++的传值引用,记住在java里面只有类对象传值才是引用传值
    另外其实我们也可以引入类似C++的全局变量的概念,这样你所有的类都可以使用并且改变他们了public class PublicValues {
    public static String value1;
    public static int value2;
    ...
    }这样定义之后就可以当作全局变量来操作了