Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/398.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 创建更大的数组后,如何在同一类的其他函数中使用新数组?_Java_Arrays_Dynamic Arrays - Fatal编程技术网

Java 创建更大的数组后,如何在同一类的其他函数中使用新数组?

Java 创建更大的数组后,如何在同一类的其他函数中使用新数组?,java,arrays,dynamic-arrays,Java,Arrays,Dynamic Arrays,它要求我们在没有内置函数或Arraylist的情况下实现这个类。 当需要使数据数组变大时,我创建了一个新数组并给它一个新的大小(即容量+10)。由于数据数组是一个数据成员,我可以从数组的其他函数访问它。但是,我无法访问新阵列。我可以使用数据数组创建更大的数组吗?如果没有,如何从类的其他函数访问新数组 package ADTDynamicArrays; import java.util.*; public class DynamicIntgerArray { public int d

它要求我们在没有内置函数或Arraylist的情况下实现这个类。 当需要使数据数组变大时,我创建了一个新数组并给它一个新的大小(即容量+10)。由于数据数组是一个数据成员,我可以从数组的其他函数访问它。但是,我无法访问新阵列。我可以使用数据数组创建更大的数组吗?如果没有,如何从类的其他函数访问新数组

package ADTDynamicArrays;
import java.util.*;


public class DynamicIntgerArray {

    public int data[];
    int size;
    int capacity;

public DynamicIntgerArray(){

    data = new int[5];
    size = 0; 
    capacity = 5;

}

public DynamicIntgerArray(int ca){
        size=0;
        if(ca<5)
            capacity=5;
        else
            capacity=ca;
        data=new int[capacity];
    }

public boolean checkIndex(int index){
  if(index < 0 || index >=data.length)
    throw new IndexOutOfBoundsException("Index: " + index + ",        Size: " + size); 
    else
        return true; }

public void copyOldtoNew(int [] arry1, int arry2[]){
        arry2=arry1;
                      }

public void checkCapacity(int s){
    if(capacity<= s){
        capacity +=10 ;
                    int newArray[]=new int[capacity];
                    copyOldtoNew(data,newArray);
                                    }
    }

    public void getElement (int index){

    }

    public int getlength(){
        return capacity;
                           }

public void insertElement(int element){

                               }

public void replaceElement(int index, int element){

                              }
public void print(){



                                 }



public void addShiftElements(int index, int element){

}
}
封装adtdynamics阵列;
导入java.util.*;
公共类动态数组{
公共int数据[];
整数大小;
国际能力;
公共动态阵列(){
数据=新整数[5];
尺寸=0;
容量=5;
}
公共动态阵列(国际ca){
尺寸=0;
if(ca=data.length)
抛出新的IndexOutOfBoundsException(“索引:+Index+”,大小:+Size);
其他的
返回true;}
公共无效copyOldtoNew(int[]arry1,int arry2[]{
arry2=arry1;
}
公共无效检查容量(整数秒){
if(容量=数据长度)
抛出新的IndexOutOfBoundsException(“索引:+Index+”,大小:+Size);
其他的
返回true;}
公共无效copyOldtoNew(int[]arry1,int arry2[]{
}
公共无效检查容量(整数秒){
如果(容量在此代码之后):

int newArray[]=new int[capacity];
copyOldtoNew(data,newArray);
你需要这个小小的魔法:

data = newArray;
好吧,我希望你明白这根本不是魔术。

在这段代码之后:

int newArray[]=new int[capacity];
copyOldtoNew(data,newArray);
你需要这个小小的魔法:

data = newArray;

好吧,我希望您理解它一点也不神奇。

您应该创建一个新数组,然后像这样引用数据数组

int oldItems[]=new int[10];//这是您的数据数组

int newItems[]=newint[20];//这是新创建的数组

System.arraycopy(oldItems,0,newItems,0,10);//将新数组复制到数据数组


oldItems=newItems;//您保存的数据和数据数组大小的增加

您应该创建一个新数组,然后像这样引用数据数组

int oldItems[]=new int[10];//这是您的数据数组

int newItems[]=newint[20];//这是新创建的数组

System.arraycopy(oldItems,0,newItems,0,10);//将新数组复制到数据数组


oldItems=newItems;//您保存的数据和数据数组的大小增加了

我假设有代码您可以/不能修改?您需要编写什么部分?哪些部分不能修改?此外,如果这是学校任务,请记住,这样做并不是为了解决您的家庭作业问题!我添加了不打算修改的代码ified.这是我挖出来的一个老问题。这里没有问题。我假设有代码你可以/不能修改?你需要写什么部分?哪些部分不能修改?此外,如果这是学校的任务,请记住,这样做并不是为了解决你的家庭作业问题!我添加了不打算修改的代码。这是一个老问题我发现的问题。这里没有问题是的,但是两个数组的大小不同。这条语句不是只复制元素吗?不,这条语句不是复制元素。
data
只是指向保存数组的内存块的指针。
newArray
是指向另一个块的另一个指针。statement
data=newArray;
将一个指针替换为另一个指针。旧块不再被引用,因此它将被垃圾收集。此指针副本非常快,并且可以工作。因此名为data的指针将被分配给新数组?否,名为
newArray
的指针将被分配给名为
dat的指针a
。好的,非常清楚,谢谢。我被一个事实误导了,那就是人们总是说Java中不使用指针。是的,但两个数组的大小不同。这个语句不是只复制元素吗?不,这个语句不是要复制元素。
数据
只是指向内存块的指针g您的数组。
newArray
是指向另一个块的另一个指针。语句
data=newArray;
将一个指针替换为另一个指针。旧块不再被引用,因此它将被垃圾收集。此指针副本非常快,并且可以工作。因此称为data的指针将被分配给新数组?不,是名为
newArray
的指针将被分配给名为
data
的指针。好的,非常清楚,谢谢。我被一个事实误导了,那就是人们总是说Java中不使用指针。