Я запрограммировал код java, который имеет два вектора v1
и v2
. Теперь v1
и v2
оба хранят данные в форме пакета (предположительно), который содержит формат, такой как v1.add("A",1,2)
или v2("B",3,4)
, предположим, что размер пакета равен 3. Теперь v2 проверит, находится ли его пакет уже в v1 , Если он есть, то v2
удалит пакет, а если его нет в v1
, то пакет будет добавлен в v1
и будет удален из v2
. Например, v1["A",1,2]
и v2["A",1,1,"A",1,2]
.
Теперь v2
начнется с "A"
. Он найдет A
в v1
. Тогда это будет go до 1
. Опять же, он будет go до 1
и v2
не найдет 1
в v1
. И он добавит ("A",1,1)
к v1
и удалит его из v2
. Так v1
стоит ["A",1,2,"A",1,1]
и v2
будет стоять с ["A",1,2]
. Теперь v2 снова проверит, находится ли ["A",1,2]
в v1
или нет. Программа начнет проверку с начала v1
. И он найдет "A"
, затем 1
, затем 2
. Так что v2
удалит ["A",1,2]
из себя. Вот мой код:
package privatechecker;
import java.util.LinkedList;
import java.util.Vector;
public class Privatechecker {
public static void main(String[] args) {
int a=0,i=0,j=0,b=0,k=0;
Vector v1= new Vector();
Vector v2= new Vector();
v1.add("A");
v1.add(2);
v1.add(3);
v2.add("A");
v2.add(2);
v2.add(3);
v2.add("B");
v2.add(2);
v2.add(3);
v2.add("B");
v2.add(2);
v2.add(3);
v2.add("A");
v2.add(7);
v2.add(38);
v2.add("C");
v2.add(4);
v2.add(5);
v2.add("C");
v2.add(10);
v2.add(5);
v2.add("C");
v2.add(10);
v2.add(5);
do {
for(j=0;j<v1.size()-1;){
if(v2.get(i)== v1.get(j)){
i=i+1;
j=j+1;
a=0;
if(v2.get(i)== v1.get(j)){
i=i+1;
j=j+1;
a=0;
if(v2.get(i)== v1.get(j)){
System.out.println("Deleted "+v2.get(i));
v2.remove(i);
i=i-1;
System.out.println("Deleted "+v2.get(i));
v2.remove(i);
i=i-1;
System.out.println("Deleted "+v2.get(i));
v2.remove(i);
System.out.println("Buffered "+v2);
a=1;
i=0;
j=0;
}
else {
i=i-2;
j=j+1;
a=0;
}
}
else{
i=i-1;
j=j+2;
a=0;
}
}
else {
j=j+3;
i=0;
a=0;
}
}
if(a==0){
System.out.println("Added "+v2.get(i));
v1.add(v2.get(i));
v2.remove(0);
System.out.println("Added "+v2.get(i));
v1.add(v2.get(i));
v2.remove(0);
System.out.println("Added "+v2.get(i));
v1.add(v2.get(i));
v2.remove(0);
System.out.println("Stored "+v1);
System.out.println("Buffer "+v2);
i=0;
}
}
while(v2.isEmpty()==false);
System.out.println("Stored "+v1);
System.out.println("Buffered "+v2);
}
}
Теперь проблема в том, что я получаю
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Array index out of range: 0
at java.util.Vector.get(Vector.java:748)
at privatechecker.Privatechecker.main(Privatechecker.java:53)
C:\Users\User\AppData\Local\NetBeans\Cache\8.2\executor-snippets\run.xml:53: Java returned: 1
Я не знаю, почему я получаю ошибку индексации, потому что я набрал несколько команд печати, чтобы проверить, векторные элементы получают правильно. Все они верны, даже если v1 и v2 содержат именно те элементы, которые я хочу. Но, как показывают ошибки, я не могу распечатать векторы за пределами l oop. Как это исправить?