【发布时间】:2016-03-13 07:12:53
【问题描述】:
public class DataOperations {
int arraySize=50;
int[]array=new int[arraySize];
public void generateRandomArray(){
for(int i=0;i<arraySize;i++){
array[i]=i;
}
}
public int getValueAtIndex(int index){
if(index<arraySize){
System.out.println("Your value At index "+index+" is "+array[index]);
return array[index];
}else{
System.out.println("Please Return an Index that is inbounds");
return 0;
}
}
public boolean doesArrayContainValue(int searchValue){
boolean valueInArray=false;
for(int i=0;i<arraySize;i++){
if(array[i]==searchValue){
valueInArray=true;
}
}
return valueInArray;
}
public void deleteIndex(int index){
if(index<arraySize){
for(int i=index;i<(arraySize-1);i++){
array[i]=array[i+1];
}
}
System.out.println(arraySize);
arraySize--;
System.out.println(arraySize);
}
public void printArray(){
for(int i=0;i<arraySize;i++){
System.out.print(i+"-");
System.out.println(array[i]);
}
}
public void insertValue(int index){
if(index<arraySize){
array[arraySize]=index;
System.out.println(arraySize);
arraySize++;
System.out.println(arraySize);
}
}
public void linearSearchForValue(int value){
boolean valueInArray=false;
System.out.println("The was Found and is at Index:");
for(int i=0;i<arraySize;i++){
if(array[i]==value){
System.out.println(i);
}
}
}
}
嘿,所以我为我的数组创建了简单的添加和删除方法。但是,我不确定几个部分。我了解 add 方法,并且我们正在将我在下面的 Driver 类中创建的这个特定数组对象的 arraySize 从 50 减少到 49。但是,我不确定为什么我不能在我的删除方法 insertValue 方法之前执行我的 add 方法,如果我将 arraySize++ 放在 array[arraySize]=index 之前,并且没有调用我的 deleteIndex 方法不应该我的 arraySize=51?但这会引发越界异常 下面的驱动类
public class Driver {
public static void main(String[] args) {
DataOperations array=new DataOperations();
array.generateRandomArray();
array.insertValue(20);
array.printArray();
}
}
【问题讨论】:
-
数组是固定大小的数据结构。您无法即时更改其大小。在您的情况下,arraysize 不是实际的arraysize,您正在维护它以用于计算目的。您可以通过调用 array.length 获得实际的数组大小。在该阵列的整个生命周期中它将保持不变。如果要更改大小,请使用 ArrayList。
-
但是如果我先调用我的 deleteIndex 方法,然后我调用我的插入方法,这是怎么回事。如果它是固定的,那么我首先调用哪种方法不应该无关紧要吗?它不应该每次都给我一个越界异常吗?
-
只要你的大小不超过实际的数组大小,它就会起作用。因此,只要您的大小小于 50,任何数量的添加和删除都可以。一旦达到 50,它将开始失败。您正在将自己的变量与 java 的数组大小混合。看看这个 - docs.oracle.com/javase/tutorial/java/nutsandbolts/arrays.html
-
哦,等一下,我想我明白了,所以如果我创建一个名为 arraySize=10; 的变量然后使我的数组大小=50;我可以插入和删除,因为我不会操纵实际的数组大小吗?
-
如果您创建一个大小为 10 的数组,并且要插入 50 个元素,则必须创建大小为 50 的新数组,从大小为 10 的数组中复制元素,然后添加剩余元素.您不能将旧数组修改为新大小。
标签: java arrays eclipse stack queue