정렬 된 벡터에 대해이 코드가 Java에서 있지만 문제가 발생했습니다. 어떻게 든 올바르게 추가하지 않으면 " 예외 : java.lang.ArrayIndexOutOfBoundsException : 10"과 같은 오류가 발생할 수 있습니다. 아마 약간의 수정이 필요 하겠지만 나는 그것을 보지 않을 것입니다. 아무도이 작품을 만들 수 있도록 도와 줄 수 있습니까? 정렬 된 벡터 추가 문자열
마술 배열을 성장하지 않습니다 새로운 번호로maximum
을 설정하면
package ads2;
public class SortedVector {
private int length;
private int maximum;
private int growby;
private int temp;
private int x = 0;
private int high;
private int middle;
private int low;
private String[] data;
public SortedVector()
{
length = 0;
maximum = 10;
data = new String[maximum];
}
public void SetSorted() {
}
public void SetGrowBy(int growby)
{
maximum += growby;
}
public int GetCapacity()
{
return maximum;
}
public int GetNoOfItems()
{
return length;
}
public String GetItemByIndex(int index)
{
return data[index];
}
public int FindItem(String search)
{
for (x=0;x<=length;)
{
middle =((low + high)/2);
if (data[middle].compareTo(search)==0)
{
return middle;
}
else if (data[middle].compareTo(search)<0)
{
low = middle;
x++;
return FindItem(search);
}
else
{
high = middle;
x++;
return FindItem(search);
}
}
return -1;
}
public boolean Exists(String search)
{
boolean output;
int y;
y = 0;
while (data[y] != search && (length - 1) > y)
{
++y;
}
if (data[y] == search)
{
output = true;
} else
{
output = false;
}
y = 0;
return output;
}
public void AddItem(String value)
{
if (length == maximum)
{
maximum += 10;
}
data[length] = value;
length++;
}
public void InsertItem(int index, String value)
{
if (length == maximum)
{
maximum += 10;
}
for(int i = length - 1; i >= index; --i)
{
data[i + 1] = data[i];
}
data[index] = value;
length++;
}
public void DeleteItem(int index)
{
for(int x = index; x < length - 2; ++x)
{
data[x] = data[x + 1];
}
length--;
}
public String toString()
{
String res = "";
for (int i=0; i<length; i++)
res+=data[i] + "; ";
return res;
}
}
자바에서 배열의 인덱스가 0부터 시작됩니다. 길이가 10 인 배열, 즉 data = new String [10]을 만들면 0-9를 호출하여 각 값을 가져올 수 있습니다. 'data [10]'을 호출하면 범위 밖의 인덱스를 던질 것입니다. – chancea