2015-11-25 87 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

對不起,我沒有得到你所說的。但是,假設你有一個值,並且你想知道它的索引,那麼'ArrayList'中的'indexOf'函數將給你這個選擇。 – Joshi

+0

'indexOf'返回_equal_對象所在的第一個索引,而_equal_則由'equals'實現確定。所以這個方法可能不會返回你正在查找的實例的索引。例如:'String a = new String(「a」);字符串b =新字符串(「a」);列表 l = new ArrayList <>(Arrays.asList(a,b));的System.out.println(l.indexOf(B));'。這會打印*「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()方法。

正如已經回答的其他人所指出的那樣,返回的索引(在這兩種情況下)都是第一個匹配的實例。