Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
0 / 0 / 0
Регистрация: 13.03.2016
Сообщений: 23

Ошибка: ArrayIndexOutOfBoundsException

18.05.2018, 13:44. Показов 2078. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Вот условие задачи:

Хеш-таблица состоит из m ячеек (ячейки нумеруются целыми числами от 0 до m − 1). Для разрешения коллизий используется метод открытой адресации.

Функция
h(x, i) = ((x mod m) + c ⋅ i) mod m

задает линейную последовательность проб свободных ячеек, где x — ключ, i — номер попытки (попытки нумеруются с нуля), c — константа.
В таблицу было последовательно добавлено n ключей. В случае, если ключ в таблице уже есть, повторного добавления не происходит.

Определите, какой ключ хранится в каждой ячейке таблицы по окончании выполнения всех операций.

Формат входного файла
В первой строке через пробел записаны три целых числа: размер m таблицы (2 ≤ m ≤ 10 000), константа c (1 ≤ c ≤ m − 1) и число n ключей для добавления (0 ≤ n ≤ 10 000). Число c взаимно просто с числом m. Далее в последующих n строках записаны ключи, которые добавляются в хеш-таблицу, — целые числа из промежутка от 0 до 109. Ключи могут повторяться, но гарантируется, что в таблице достаточно места для размещения всех уникальных ключей из n заданных.

Формат выходного файла
Выведите ровно m чисел, i-е число описывает i-ю ячейку (0 ≤ i ≤ m − 1). Если ячейка пуста, выведите −1, иначе выведите ключ, который в ней содержится.

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
import java.util.Scanner;
import java.util.Vector;
import java.io.File;
import java.io.FileWriter;
 
public class FiftySeven {
    public static void main(String [] args) {
        try
        {
            File input = new File ("input.txt");
            Scanner sc = new Scanner(input);
            int m, c, n, key;
 
            m = sc.nextInt();
            c = sc.nextInt();
            n = sc.nextInt();
            
            Vector<Integer> hash = new Vector<>(m,-1);
            Vector<Boolean> unique = new Vector<>(10^9+1);
            
            for (int i=0; i<n; i++)
            {
                int j=0;
                key = sc.nextInt();
                if (unique.get(key))
                    continue;
                else 
                    unique.add(key,true);
                int cell = (key%m + c*j) % m;
                j++;
                while (hash.get(cell) != -1)
                {
                    cell = (key%m + c*j) % m;
                    j++;
                }
                hash.add(cell, key);
            }
            FileWriter out = new FileWriter("output.txt");
 
            for (int i : hash)
                out.write(i + " ");
            
            sc.close();
            out.flush();
            out.close();
            System.exit(0);
        }
 
        catch(Exception e)
        {
            System.err.println (e);
            System.exit(-1);
        }
    }
}
Выдает ошибку: java.lang.ArrayIndexOutOfBoundsException : Array index out of range: 11

Может, я конечно совсем нуб и все мегаочевидно, но я в отчаянии, а дедлайны горят.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
18.05.2018, 13:44
Ответы с готовыми решениями:

Ошибка - ArrayIndexOutOfBoundsException
всем привет) собственно, в чём проблема. имеется программа, написанная в среде NetBeans. при запуске в среде она работает как надо...

Ошибка в задании. ArrayIndexOutOfBoundsException
Дали задание по джаве на дом, переписал код программы в NetBeans из методички, но при запуске вылезает ошибка: &quot;Exception in...

Ошибка java.lang.ArrayIndexOutOfBoundsException
Задание: вставка в массив другого массива элементов в указанное место В строчке , где написано System.arraycopy(array2,0,...

14
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7390 / 4817 / 1246
Регистрация: 30.03.2015
Сообщений: 13,667
Записей в блоге: 29
18.05.2018, 14:17
Цитата Сообщение от T_R_M Посмотреть сообщение
Выдает ошибку: java.lang.ArrayIndexOutOfBoundsException : Array index out of range: 11
в какой строке?
0
 Аватар для Aviz__
2740 / 2049 / 507
Регистрация: 17.02.2014
Сообщений: 9,470
18.05.2018, 14:20
Цитата Сообщение от T_R_M Посмотреть сообщение
совсем нуб
если дебагером не проходил, то да, совсем.
0
0 / 0 / 0
Регистрация: 13.03.2016
Сообщений: 23
18.05.2018, 14:26  [ТС]
Welemir1, на 25 строке вылетает
Java
1
 if (unique.get(key))
Не знаю, на самом деле, как правильно с векторами работать, чисто интуитивно делаю. Поэтому там спокойно может оказаться ошибка где-то в использовании векторов или их задании.
0
 Аватар для Aviz__
2740 / 2049 / 507
Регистрация: 17.02.2014
Сообщений: 9,470
18.05.2018, 14:34
Цитата Сообщение от T_R_M Посмотреть сообщение
10^9+1
вот это зачем?
0
0 / 0 / 0
Регистрация: 13.03.2016
Сообщений: 23
18.05.2018, 14:50  [ТС]
Aviz__, Господи, ну вот так сделал, какая разница, уберешь это - ничего не изменится, ошибка будет та же.
0
 Аватар для Aviz__
2740 / 2049 / 507
Регистрация: 17.02.2014
Сообщений: 9,470
18.05.2018, 15:04
T_R_M, дебагер - это специальная программа, которая тебе все покажет, где баги. 5 минут на освоение и вся жизнь без унижений...

Добавлено через 9 минут
T_R_M, гля, все работает
Java
1
2
3
4
5
6
public static void main(String[] args) {
        Vector<Boolean> unique = new Vector<>();
        boolean key = true;
        unique.add(key);
        System.out.println(unique.get(0));
    }
а если, как у тебя
Java
1
2
3
4
public static void main(String[] args) {
        Vector<Boolean> unique = new Vector<>();
        System.out.println(unique.get(0));
    }
нет!
0
0 / 0 / 0
Регистрация: 13.03.2016
Сообщений: 23
18.05.2018, 15:13  [ТС]
Aviz__, спасибо

Добавлено через 8 минут
Aviz__, А можете привести все-таки, что должно измениться в коде? потому что все равно не работает. Я не понимаю , где ошибка выхода за пределы, не понимаю, что точно должно измениться
0
 Аватар для Aviz__
2740 / 2049 / 507
Регистрация: 17.02.2014
Сообщений: 9,470
18.05.2018, 15:16
мои примеры о чем говорят?
0
0 / 0 / 0
Регистрация: 13.03.2016
Сообщений: 23
18.05.2018, 15:26  [ТС]
Aviz__, не вижу связи со своим кодом, у меня вектор задается сразу размера 10^9, а не пустой, и я в него ничего не пихаю. не понимаю как это связано с моей задачей.

Добавлено через 1 минуту
Aviz__, если вы знаете , как исправить, то можете просто показать , что в коде должно измениться? у меня помимо этой задачи есть еще 4, ну нет у меня времени это понимать, да и не надо оно мне, мне просто нужно сдать ее.
0
 Аватар для Aviz__
2740 / 2049 / 507
Регистрация: 17.02.2014
Сообщений: 9,470
18.05.2018, 15:36
зря ты не хочешь думать((. 10^9+1 = 0 в java!
0
0 / 0 / 0
Регистрация: 13.03.2016
Сообщений: 23
18.05.2018, 15:37  [ТС]
Aviz__, хорошо, заменяю на 0, а дальше что? ошибка та же.
0
 Аватар для Aviz__
2740 / 2049 / 507
Регистрация: 17.02.2014
Сообщений: 9,470
18.05.2018, 15:43
Цитата Сообщение от T_R_M Посмотреть сообщение
заменяю на 0
если тебе это не о чем не говорит, то прости, не могу ничем помочь! невозможно человеку объяснить шахмат, если он не знает, как ходит конь...
удачи!
0
0 / 0 / 0
Регистрация: 13.03.2016
Сообщений: 23
18.05.2018, 15:49  [ТС]
Aviz__, я не понимаю, если вы знаете , что нужно изменить, то почему нельзя просто показать кусок кода измененного и не тратить мое и ваше время. я же пришел за помощью, а не просто послушать, как я кодить не умею. так я и не кодер! мне это не нужно знать, мне нужно это сдать. почему обязательно надо оскорблять, вместо того, чтобы просто помочь.
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
19.05.2018, 19:29
Цитата Сообщение от T_R_M Посмотреть сообщение
мегаочевидно
У тебя оба вектора пустые.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
19.05.2018, 19:29
Помогаю со студенческими работами здесь

Ошибка java.lang.ArrayIndexOutOfBoundsException
package glava3; import java.io.*; public class Vector { private int n; private int vector = new int ; public Vector() ...

Ошибка в коде java.lang.ArrayIndexOutOfBoundsException: 1
Программа вылетает после ввода параметров фигур. package univer.project_1.cylindr_circle; import java.util.Scanner; public...

Ошибка Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException
import java.util.Scanner; public class Filter { public static void main (String args) { Scanner sc = new...

Ошибка Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
Посмотрите пожалуйста, что тут не так. Битый час сижу голову ломаю, никак додуматься не могу. Выдает эту ошибку:Exception in thread...

Ошибка Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
Добрый день! Дабы разобраться с объектами решил написать простую программу для вывода чисел фибоначчи (количество чисел задается с...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru