Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
28 / 3 / 1
Регистрация: 13.12.2017
Сообщений: 192
1

Если N находится вне массива, тогда возвращаем -1/ if не берёт условие в обработку

09.01.2018, 02:13. Показов 2034. Ответов 8
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
* Если число с индексом N находится вне массива, тогда выводим-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
/*Вам задан массив с положительными числами и числом N. 
 * Вы должны найти N-ю степень элемента в массиве с индексом N. 
 * Если N находится вне массива, тогда выводим-1. 
 * Не забывайте, что первый элемент имеет индекс 0.
 
Давайте рассмотрим несколько примеров:
 
array = [1, 2, 3, 4] и N = 3, то результат равен 4 ^ 3 == 64;
array = [1, 2, 3] и N = 3, но N вне массива, поэтому результат равен -1.*/
 
public class MassaNMain {
 
    public static void main(String[] args) {
        int N = 4; 
        int []Mass1= {1, 2, 3, 4};    
        int id = 0;
        int Max_id =Mass1.length; //лишнее
        
        if (Mass1[N]<=Mass1.length) 
             {id = Mass1[N];
              System.out.println ("числа массива с индексом N = "+id+" максимальный id массива= "+Max_id);}
        else {System.out.println(1);}
        
        }
    
 
}
Ругается говорит
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 4
at MassaNMain.main(MassaNMain.java:19)
Как это обойти
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.01.2018, 02:13
Ответы с готовыми решениями:

Условие в Отчете: Если физ.лицо тогда, если юр.лицо тогда
Здравствуйте. Работаю в конфигурации Бухгалтерия предприятия, редакция 2.0 (2.0.43.6) на...

Условие - ЕСЛИ Документ2 введен на основании Документ1, ТОГДА
Здравствуйте. Создаю документ в конфигурации Бухгалтерия предприятия, редакция 2.0 (2.0.43.6) на...

Если значение переменной W не равно 0 и при этом котангенс от W меньше 0.5, тогда поменять знак у W, а если значение W равно 0, тогда присвоить W знач
Если значение переменной W не равно 0 и при этом котангенс от W меньше 0.5, тогда поменять знак у...

Индекс находится вне границ массива
for (int i=0; i&lt;text.Length; i++) { if(text.ToString()!=&quot; &quot;) ...

8
614 / 488 / 175
Регистрация: 02.03.2010
Сообщений: 1,238
09.01.2018, 02:26 2
Цитата Сообщение от Сергей_СПб Посмотреть сообщение
Ругается говорит
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 4
at MassaNMain.main(MassaNMain.java:19)
Как это обойти
Длина массива в примере 4 - индексы элементов - 0, 1, 2, 3
N инициализирован как 4, элемента с индексом 4 в массиве нет. Отсюда и ошибка.
0
28 / 3 / 1
Регистрация: 13.12.2017
Сообщений: 192
09.01.2018, 02:28  [ТС] 3
Так понятно, но как выполнить условие задачи, как в примере 2: array = [1, 2, 3] и N = 3, но N вне массива, поэтому результат равен -1.*/
0
614 / 488 / 175
Регистрация: 02.03.2010
Сообщений: 1,238
09.01.2018, 04:34 4
Лучший ответ Сообщение было отмечено Сергей_СПб как решение

Решение

Цитата Сообщение от Сергей_СПб Посмотреть сообщение
но как выполнить условие задачи, как в примере 2: array = [1, 2, 3] и N = 3, но N вне массива
Видимо, условие написать что то вроде
Java
1
if (N >= 0 && N <= Mass1.length)
делать, то, что должно, когда N входит в диапазон имеющихся индексов, иначе, если не входит

Добавлено через 7 минут
P.S.
Java
1
&& N < Mass1.length
Добавлено через 1 минуту
Короче
Java
1
2
3
4
int n = 3;
int[] mass = {1, 2, 3, 4};
int result = (n >= 0 && n < mass.length) ? (int) Math.pow(mass[n], n) : -1;
System.out.println(n + "-й элемент массива в " + n + "-й степени равен " + result);
1
2677 / 1995 / 496
Регистрация: 17.02.2014
Сообщений: 9,357
09.01.2018, 09:54 5

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
import java.util.Random;
 
public class CyberForumArray {
    private static Random random = new Random();
 
    public static int[] arrayMaker(int arrLeng){
        int[] array = new int[arrLeng];
        for ( int i = 0; i < array.length; ++i ) { array[i] = i + 1; }
        for ( int i = array.length - 1; i > 0 ; --i ) {
            int j = random.nextInt(i);
            int tmp = array[i];
            array[i] = array[j];
            array[j] = tmp;
        }
        return array;
    }
    public static void main(String[] args) {
        int[] array = arrayMaker(5);
        for (int i = 0; i < array.length; i++) {
            int indexArray = random.nextInt(array.length + 2);
            try {
                System.out.printf("%.1f\n",Math.pow(array[indexArray],indexArray));
            }catch (ArrayIndexOutOfBoundsException ex){
                System.out.println(-1);
            }
        }
 
    }
1
28 / 3 / 1
Регистрация: 13.12.2017
Сообщений: 192
09.01.2018, 10:49  [ТС] 6
мда...
Цитата Сообщение от Aviz__ Посмотреть сообщение
// Пошаговая трассировка кода дает ответы на 99% проблем.
, но приблизительно понятно. Спасибо

Добавлено через 31 минуту
Цитата Сообщение от _ViPeR_ Посмотреть сообщение
int result = (n >= 0 && n < mass.length) ? (int) Math.pow(mass[n], n) : -1;
Интересно, с условным оператором работает, а на любые другие ругается, почему?
0
614 / 488 / 175
Регистрация: 02.03.2010
Сообщений: 1,238
09.01.2018, 11:40 7
Цитата Сообщение от Сергей_СПб Посмотреть сообщение
Интересно, с условным оператором работает, а на любые другие ругается, почему?
К сожалению, не понятен вопрос...
0
28 / 3 / 1
Регистрация: 13.12.2017
Сообщений: 192
09.01.2018, 12:13  [ТС] 8
Цитата Сообщение от _ViPeR_ Посмотреть сообщение
К сожалению, не понятен вопрос...
если прописать : int result = (n >= 0 && n < mass.length) ? (int) Math.pow(mass[n], n) : -1;, все работает
если вставить условия в любой цикл - не работает - почему?
Хотя нет работает, но странно:
Java
1
2
if (n >= 0 && n < mass.length)
            System.out.println (1);
-так выдает ошибку/предупреждение,
а так:
Java
1
if (mass.length <= n && n > 0)
все работает.
Ладно будем разбираться. Спасибо
0
614 / 488 / 175
Регистрация: 02.03.2010
Сообщений: 1,238
09.01.2018, 13:13 9
Так:
Цитата Сообщение от Сергей_СПб Посмотреть сообщение
if (mass.length <= n && n > 0)
1. mass.length <= n - станет возможным исключением, как например:
Цитата Сообщение от Сергей_СПб Посмотреть сообщение
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 4
Т.е. n может по условию быть равным длине массива, но, если учесть, что
Цитата Сообщение от Сергей_СПб Посмотреть сообщение
* Не забывайте, что первый элемент имеет индекс 0.
получается, что длина массива на 1 больше его максимального индекса.
2. n > 0 - не даст провести операцию с первым элементом в массиве (тот, что с индексом 0), хотя тут всегда будет результат 1

P.S. Скопипастил
Java
1
2
if (n >= 0 && n < mass.length)
            System.out.println (1);
работает при любых n
1
09.01.2018, 13:13
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.01.2018, 13:13
Помогаю со студенческими работами здесь

Индекс находится вне границ массива
Программа на вход должна получить 2 параметра: путь к файлу и число, которое нужно заменить на 0....

Индекс находится вне границ массива. С#
Вот код C# int m, n, summachet = 0; Console.WriteLine(&quot;Введите количество...

Индекс находится вне границ массива
В чем ошибка? for (int c = 0; c &lt; text.Length; c++) // до длинны...

Индекс находится вне границ массива
Здравствуйте, ув форумчане. Я хотел добавить в свою программу сохранения и чтения историю ссылок....

Индекс находится вне границы массива
На вашем форуме нашел эту программу, но почему-то она ошибку выдает: uses crt; function...

Индекс находится вне границ массива
Console.WriteLine(&quot;Введи те сколько?&quot;); int i = Convert.ToInt32(Console.ReadLine()); ...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru