Работа с индексами массива
Всем здравствуйте, я не понимаю, почему у меня не правильно работает моя программа, можете подсказать? Без троллинга, я искренне не понимаю почему.
НАПРИМЕР если ввести 5 или 6, то программа приравнивает их к отрицательным числам.
Задание:
1) Создайте массив целых чисел из 5-ти элементов.
2) Используя JOptionPane, попросите указать пользователя индекс элемента, который он хочет посмотреть.
3) Если пользователь указывает индекс отрицательный, то сгенерируйте исключение и обработайте его.
4) Если пользователь ввёл некорректный индекс, то Java автоматически выбросит исключение, которое Вам так же нужно перехватить и обработать.
5) Если пользователь ввёл корректный индекс, то в JOptionPane вывести соответствующий этому индексу элемент массива.
Примечание: В качестве обработки исключения выводите соответствующее сообщение в JOptionPane.
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 javax.swing.*; public class Exeptions extends Throwable { public static void main(String[] args) { int[] arr = new int[5]; arr[0] = 34; arr[1] = 58; arr[2] = 24; arr[3] = 62; arr[4] = 65; String in = JOptionPane.showInputDialog(null,"Укажите индекс элемента: "); try { int a = Integer.parseInt(in); if (a0) throw new Exception(); JOptionPane.showMessageDialog(null,"Под индексом " + a + " находится: " + arr[a]); }catch (NumberFormatException e){ JOptionPane.showMessageDialog(null,"Ввод некорректен!"); System.out.println(e); }catch (Exception e){ JOptionPane.showMessageDialog(null,"Вы ввели отрицательное число!"); System.out.println(e); } finally { System.out.println("Завершение программы"); } } }
Получить индекс значения массива java
Есть строковый массив системных шрифтов fontNames. Как узнать какой индекс у элемента массива, значение которого Times New Roman ?
Отслеживать
8,900 11 11 золотых знаков 31 31 серебряный знак 55 55 бронзовых знаков
задан 13 сен 2016 в 12:28
319 1 1 золотой знак 4 4 серебряных знака 18 18 бронзовых знаков
2 ответа 2
Сортировка: Сброс на вариант по умолчанию
Вернёт индекс элемента в массиве String :
String[] s = ; System.out.println(Arrays.asList(s).indexOf("Times New Roman"));
Отслеживать
ответ дан 13 сен 2016 в 12:44
8,900 11 11 золотых знаков 31 31 серебряный знак 55 55 бронзовых знаков
Спасибо большое! Реально помогло! 🙂
13 сен 2016 в 13:03
Обратите внимание, что Arrays.asList(s).indexOf() работает только с объектами. Т.е.
int[] s = ; System.out.println(Arrays.asList(s).indexOf(1));
всегда будет выдавать «-1».
Отслеживать
51.6k 200 200 золотых знаков 61 61 серебряный знак 242 242 бронзовых знака
ответ дан 18 авг 2017 в 7:48
71 1 1 серебряный знак 1 1 бронзовый знак
- java
- массивы
-
Важное на Мете
Похожие
Подписаться на ленту
Лента вопроса
Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.
Дизайн сайта / логотип © 2023 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2023.11.15.1019
Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.
Как найти индекс элемента в массиве java
Чтобы найти индекс элемента в массиве в Java , можно воспользоваться циклом for и проверять каждый элемент на равенство искомому. Как только элемент будет найден, можно вернуть его индекс. Если элемент не найден, можно вернуть -1 или выбросить исключение.
Вот пример кода:
public static int findIndex(int[] arr, int element) for (int i = 0; i arr.length; i++) if (arr[i] == element) return i; > > return -1; // если элемент не найден >
06 апреля 2023
Для того, чтобы найти индекс элемента в массиве в Java , можно использовать метод indexOf класса java.util.Arrays Этот метод принимает на вход массив и искомый элемент, и возвращает индекс первого вхождения элемента в массиве. Если элемент не найден, метод возвращает -1.
Например, чтобы найти индекс числа 42 в массиве numbers , можно написать следующий код:
int[] numbers = 10, 20, 30, 40, 42, 50>; int index = Arrays.indexOf(myArray, 42); // 4
Найти индекс элемента в данном массиве в Java
В этом посте будет обсуждаться, как найти индекс элемента в массиве примитивов или объектов в Java.
Решение должно либо возвращать индекс первого вхождения требуемого элемента, либо -1, если его нет в массиве.
1. Наивное решение — линейный поиск
Наивное решение состоит в том, чтобы выполнить линейный поиск в заданном массиве, чтобы определить, присутствует ли целевой элемент в массиве.
⮚ Для примитивных массивов:
// Метод поиска индекса элемента в примитивном массиве в Java
public static int find ( int [ ] a , int target )
for ( int i = 0 ; i < a . length ; i ++ )
if ( a [ i ] == target ) <
⮚ Для массивов объектов:
// Общий метод для поиска индекса элемента в массиве объектов в Java
public static
for ( int i = 0 ; i < a . length ; i ++ )
if ( target . equals ( a [ i ] ) ) <
2. Использование потока Java 8
Мы можем использовать Java 8 Stream для поиска индекса элемента в массиве примитивов и объектов, как показано ниже:
⮚ Для примитивных массивов:
// Метод поиска индекса элемента в примитивном массиве в Java
public static int find ( int [ ] a , int target )
return IntStream . range ( 0 , a . length )
. filter ( i -> target == a [ i ] )
. orElse ( — 1 ) ; // вернуть -1, если цель не найдена
⮚ Для массивов объектов:
// Общий метод для поиска индекса элемента в массиве объектов в Java
public static
return IntStream . range ( 0 , a . length )
. filter ( i -> target . equals ( a [ i ] ) )
. orElse ( — 1 ) ; // вернуть -1, если цель не найдена
3. Преобразовать в список
Идея состоит в том, чтобы преобразовать данный массив в список и использовать List.indexOf() метод, который возвращает индекс первого вхождения указанного элемента в этом списке.
⮚ Для примитивных массивов:
// Метод поиска индекса элемента в примитивном массиве в Java
public static int find ( int [ ] a , int target )
return Arrays . stream ( a ) // IntStream
. boxed ( ) // Stream
. collect ( Collectors . toList ( ) ) // List
. indexOf ( target ) ;
⮚ Для массивов объектов:
// Общий метод для поиска индекса элемента в массиве объектов в Java
public static
return Arrays . asList ( a ) . indexOf ( target ) ;
4. Бинарный поиск отсортированных массивов
Для отсортированных массивов мы можем использовать Алгоритм бинарного поиска для поиска указанного массива для указанного значения.
⮚ Для примитивных массивов:
// Метод поиска индекса элемента в примитивном массиве в Java
public static int find ( int [ ] a , int target )
int index = Arrays . binarySearch ( a , target ) ;
return ( index < 0 ) ? - 1 : index ;
⮚ Для массивов объектов:
// Общий метод для поиска индекса элемента в массиве объектов в Java
public static
int index = Arrays . binarySearch ( a , target ) ;
return ( index < 0 ) ? - 1 : index ;
5. Использование библиотеки Guava
⮚ Для примитивных массивов:
Библиотека Guava предоставляет несколько служебных классов, относящихся к примитивам, например Ints для инт, Longs надолго, Doubles на двоих, Floats для поплавка, Booleans для логического значения и так далее.
Каждый класс полезности имеет indexOf() метод, который возвращает индекс первого появления цели в массиве. Мы также можем использовать lastIndexOf() чтобы вернуть индекс последнего появления цели в массиве.
// Метод поиска индекса элемента в примитивном массиве в Java
public static int find ( int [ ] a , int target ) <
return Ints . indexOf ( a , target ) ;
⮚ Для массивов объектов:
Guava’s com.google.commons.collect.Iterables класс содержит статический служебный метод indexOf(Iterator, Predicate) который возвращает индекс первого элемента, удовлетворяющего предоставленному предикату, или -1, если итератор не имеет таких элементов.
