Моя хэш-таблица выбрасывает исключение out of bound, но я не могу понять почему.
Моя хэш-таблица выдает java. lang.ArrayIndexOutOfBoundsException: когда я вставляю более 200 объектов. Я думал, что правильно закодировал метод вставки и перефразирования, может ли кто-нибудь просто указать, что именно я делаю неправильно?
public void insert(String key) throws MapException { int word = hcode.giveCode(key); int index1 = word % List.length; int index2 = 5 - word % 5; int i = 0; if (find(key) == false) { while (i < List.length) { if (List[(((index1) + (index2 * i)) % List.length)] == null) { List[(((index1) + (index2 * i)) % List.length)] = key; numberOfElements++; break; } else { i++; } } if (getLoadFactor() > MaxLoadFactor) { rehash(); } } } public void insert(String key, String[] List) throws MapException{ int word = hcode.giveCode(key); int index1 = word % List.length; int index2 = 5 - word % 5; int i = 0; while (i < List.length) { if (List[(((index1) + (index2 * i)) % List.length)] == null) { List[(((index1) + (index2 * i)) % List.length)] = key; break; } else { i++; } } public void rehash() throws MapException{ int rehashNum = primeNum(FirtListSize); String [] rehashList = new String [rehashNum]; for (int i = 0;i<list.length;i++){ if(list[i]!="null){" insert(list[i],rehashlist);="" }="" list="rehashList;" public="" int="" primenum(int="" num1){="" boolean="" isprime="false;" num="Num1" *2;="" start="2;" while="" (!isprime)="" {="" +="1;" m="(int)" math.ceil(math.sqrt(num));="" for="" (int="" i="start;" <="m;" i++)="" if="" (num="" %="" 0)="" break;="" return="" num;="" pre=""> What I have tried: I have tried changing the value from == null to != null which I thought would control the problem and acount for dummy values
Suvendu Shekhar Giri
В чем проблема с отладкой и таким простым поиском корня проблемы?
Какую IDE вы используете?