2015-11-25 5 views
0

У меня есть массив int, и я присвоил ему значение со случайным индексом для переменной int. Я хотел знать, есть ли способ проверить индекс из массива, из которого он пришел, из переменной, которую он назначил.Проверка индекса массива Java

Random rand = new Random(); 

private int[] cards = {2, 3, 4, 5, 6, 7, 8, 9, 10}; 

int a = cards[rand.nextInt(8)]; 

поэтому я присвоено значение из массива переменной а, но я хочу знать, если есть способ проверить переменную а, чтобы увидеть, что индекс был он пришел из

+4

Просто сохраните свой 'rand.nextInt (8)' в собственной переменной, тогда вы знаете свой индекс ... совершенно очевидно, правильно? – Tom

+1

Очень простой вопрос. Хотя я ответил на него, но пользователь до сих пор не задумывался. – Joshi

ответ

2

Вы можете хранить значение случайного перед использованием.

int randomValue = rand.nextInt(8); 
int a = cards[randomValue]; 
+0

спасибо, что это помогает ... Я несколько новичок в Java и создаю программу для блэкджека для проекта класса. это была уменьшенная версия, которую я разместил здесь, и мой массив имеет в общей сложности 52 индекса, а некоторые имеют одинаковое значение, поэтому опция поиска действительно не подходит для того, что я делаю. Я уверен, что есть намного более эффективные способы делать то, что моя программа пытается сделать, но это очень помогает ... спасибо! – Bradon

0

Вы знаете номер индекса, поскольку вы уже получаете значение в позиции индекса массива.

int index = rand.nextInt (8);

Всегда рекомендуется использовать ArrayList. И если вы использовали то, что есть простой метод, называемый indexOf, чтобы узнать индекс значения в списке.

+1

Чтобы быть точным, 'indexOf' не сообщает вам, откуда появился ваш элемент, он просто сообщает вам, где в списке помещен экземпляр« равный »(в соответствии с реализацией' equals'). Это может быть другой случай. – Tom

+0

Извините, я не понял, что вы говорите. Но, скажем, у вас есть значение, и вы хотите знать его индекс, то функция 'indexOf' из' ArrayList' дает вам этот выбор. – Joshi

+0

'indexOf' возвращает первый индекс, где находится объект _equal_, и _equal_ определяется реализацией' equals'. Таким образом, этот метод может не возвращать индекс экземпляра, который вы ищете. Например: 'String a = new String (" a "); Строка b = новая строка ("a"); Список l = новый ArrayList <> (Arrays.asList (a, b)); System.out.println (l.indexOf (б)); '. Это печатает * «0» *, потому что на индексе 0 есть экземпляр _equal_, но он относится к другому объекту в памяти и, следовательно, не тот, который вы ищете, просто «аналогичный». – Tom

0

Попробуйте это:

int index= rand.nextInt(8); 
int a = cards[index]; 
-1

С помощью простого массива, вы должны итерации, чтобы выяснить, какую позицию данного значения в . Например:

int findSlot(int a) 
{ 
    for (int i = 0, n = cards.length; i < n; i++) 
    { 
     if (cards[i] == a) return i; 
    } 
} 

Однако, если вы используете ArrayList, вы можете использовать метод indexOf().

Как отметили другие люди, которые ответили, индекс возвратился (в обоих случаях) будет первым совпадающим экземпляром.

Смежные вопросы