С Новым годом! Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
 Аватар для GPV091
3 / 3 / 1
Регистрация: 15.07.2012
Сообщений: 55

Размер двумерного массива (java.lang.ArrayIndexOutOfBoundsExceptio­n: 0)

25.02.2018, 10:03. Показов 2429. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Функция должна возвращать максимальное из чиcел, заданных двумерным массивом. Для пустого двумерного массива должно возвращаться Integer.MIN_VALUE.

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
    public int max(int[][] matrix) {
        if (matrix.length > 0) {
            int max = matrix[0][0];
            for (int i = 0; i<matrix.length; i++) {
                for (int j = 0; j<matrix.length; j++) {
                    if (matrix[i][j] > max) {
                        max = matrix[i][j];
                    }
                }
            }
            return max;
        } else {
            return Integer.MIN_VALUE;
        }
    }
Для проверки функции выполняются следующие тесты

Java
1
2
3
4
5
6
7
8
9
10
    @Test
    public void testMaxMatrix() {
        FirstSteps firstSteps = new FirstSteps();
        int[][] matrix1 = {{1, 2, 3}, {3, 4, 5}, {6, 7, 8}};
        assertEquals(8, firstSteps.max(matrix1));
        int[][] matrix2 = {{100, 200, 300}, {3, 4, 5}, {6, 7, 8}};
        assertEquals(300, firstSteps.max(matrix2));
        int[][] matrix3 = {{}};
        assertEquals(Integer.MIN_VALUE, firstSteps.max(matrix3));
    }
На третьем тесте появляется ошибка java.lang.ArrayIndexOutOfBoundsException : 0, которая указывает в функции на строку
Java
1
int max = matrix[0][0];
и в тестах на строку
Java
1
 assertEquals(Integer.MIN_VALUE, firstSteps.max(matrix3));
.

Прошу помочь разобраться, в чём ошибка? Почему не проходит тест с пустым массивом?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
25.02.2018, 10:03
Ответы с готовыми решениями:

Java.lang.ArrayIndexOutOfBoundsException: 9000
Добрый день! Создаю массив целочисленных значений, в него через for при старте программы должны заноситься значения от 1000 до 9999...

Исключение: java.lang.ArrayIndexOutOfBoundsException: 0
import java.util.Scanner; import java.util.Random; public class RandomNumbers { Scanner scanner = new Scanner(System.in); ...

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

12
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
25.02.2018, 10:11
На Ютубе поищи idea debug tutorial и поизучай
0
 Аватар для GPV091
3 / 3 / 1
Регистрация: 15.07.2012
Сообщений: 55
25.02.2018, 10:17  [ТС]
Тогда смысл этого форума? Ты всех только и отправляешь по разным ресурсам читать.
0
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
25.02.2018, 10:27
Ты считаешь, что смысл в том, чтобы кто-то искал твои ошибки и разгребал твой говнокод? Смысл тут ныть, если можно запустить дебаггер и через минуту знать ответ на свой вопрос?
0
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
25.02.2018, 11:35
Так и быть, держи, думай
int[][] a = new int[0][0];
int[][] b = {{}};
Изображения
 
0
75 / 61 / 29
Регистрация: 20.04.2015
Сообщений: 415
25.02.2018, 18:59
могу решение написать? или сам подумай)
вот смотри у тебя в цикле ты идёшь по строкам в первом цикле
а во втором ты к примеру идти должен по столбцам, а ты указываешь первый цикл меньше линны строк второй меньше длины столбцов,
1 2 3
4 5 6

скажи в массиве в двухмерном количество строк и столбцов всегда совпадают?

Добавлено через 10 минут
тебе проверку надо клепать что если matrix != null тогда начинаешь свои циклы иначе
return Integer.MIN_VALUE;
если массив [0][0] значит это ссылка null пустышка а ты в цикле шагнул на нулевой элемент а нулевого элемента не существует

Добавлено через 28 секунд
вот и вывалился за массив
0
 Аватар для HOBATOP
323 / 310 / 206
Регистрация: 14.09.2015
Сообщений: 827
25.02.2018, 19:21
GPV091, а если Вам в тесты прописать вот такие массивы:
Java
1
2
3
int[][] array0 = {{}, {}, {1, 2, 3}};
int[][] array1 = {{11, 2, 3}, {4, 5, 6, 7}, {8, 9}};
int[][] array2 = {{}, {}};
что Ваш метод выдаст в ответе? Может быть стоит переписать как-то вот этак, примерно:
Кликните здесь для просмотра всего текста

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
    public static int getMaxValue(int[][] array) {
        int count = 0, max = Integer.MIN_VALUE;
        for (int[] tmp : array) {
            count += tmp.length;
        }
        if (count > 0){
            for(int[] temp : array) {
                for (int i = 0; i < temp.length; i++) {
                    if(temp[i] > max){
                        max = temp[i];
                    }
                }
            }
        }
        return max;
    }
0
75 / 61 / 29
Регистрация: 20.04.2015
Сообщений: 415
25.02.2018, 19:29
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public int max(int[][] matrix) {
        if (matrix != null) {  //проверяем что массив есть
            int max = matrix[0][0];
            for (int i = 0; i<matrix.length; i++) { //строки
                for (int j = 0; j<matrix[1].length; j++) { //столбцы
                    if (matrix[i][j] > max) {
                        max = matrix[i][j];
                    }
                }
            }
            return max;
        } else {
            return Integer.MIN_VALUE;
        }
    }
Добавлено через 3 минуты
int[][] array2 = {{}, {}}; = это уже означает что array2 = null
int[][] matrix3 = {{}}; и это нулл
0
 Аватар для HOBATOP
323 / 310 / 206
Регистрация: 14.09.2015
Сообщений: 827
25.02.2018, 19:30
WinniPuh, Вас тоже касается:
Цитата Сообщение от HOBATOP Посмотреть сообщение
а если Вам в тесты прописать вот такие массивы:
Java
1
2
3
int[][] array0 = {{}, {}, {1, 2, 3}};
int[][] array1 = {{11, 2, 3}, {4, 5, 6, 7}, {8, 9}};
int[][] array2 = {{}, {}};
Цитата Сообщение от HOBATOP Посмотреть сообщение
что Ваш метод выдаст в ответе?
0
75 / 61 / 29
Регистрация: 20.04.2015
Сообщений: 415
25.02.2018, 19:32
ничего , не выдаст Integer MIN_VALUE она в его коде не проинициализирована
0
25.02.2018, 20:00

Не по теме:

Цитата Сообщение от WinniPuh Посмотреть сообщение
ничего , не выдаст Integer MIN_VALUE она в его коде не проинициализирована
Стесняюсь спросить: Вы проверили или чисто эвристически пришли к подобному умозаключению?

0
75 / 61 / 29
Регистрация: 20.04.2015
Сообщений: 415
26.02.2018, 06:30
на бум сказал,
Integer - это класс обёртка со своими методами и полями

Integer.VALUE_MIN - это поле этого класса, константа минимальное значение Integer = -2147483648
да надо было изначально присвоить переменной это значение, а потом вернуть значение переменной в конце программы, ретурны в середине не вызываются, метод должен был выполниться и в конце вернуть значение

Не по теме:

не ошибается тот - кто ничего не делает :)

0
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
26.02.2018, 07:03
Цитата Сообщение от WinniPuh Посмотреть сообщение
не ошибается тот - кто ничего не делает
*кто думает прежде чем говорит
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
26.02.2018, 07:03
Помогаю со студенческими работами здесь

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

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

Помогите исправить ошибку: java.lang.ArrayIndexOutOfBoundsException
Мне 14,я из Украини так что простите за ошибки .Вот в чем проблема я пол инета облазил и не нашол как ето решить помогите))) ...

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

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


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru