2013-05-21 114 views
1

我正在寫一個簡單的Java程序,它基本上存儲了之前在圖表中存在的藝術家數組;這是到目前爲止我的代碼的程序是否可以通過數組進行搜索並返回值的索引

package searching; 

import java.util.*; 

public class Searching { 
    public static void main(String[] args) {   
     Scanner scanner = new Scanner(System.in); 

     String artists[] = {"Rihanna", "Cheryl Cole", "Alexis Jordan", "Katy Perry", "Bruno Mars", 
         "Cee Lo Green", "Mike Posner", "Nelly", "Duck Sauce", "The Saturdays"}; 

     System.out.println("Please enter an artist..."); 
     String artist = scanner.nextLine(); 
    } 
} 

我只是想知道,是否有可能爲用戶鍵入藝術家之一的名字,得到的代碼搜索的陣列,並返回該指數值?如果是的話,我將如何去做,因爲我不知道從哪裏開始......先謝謝了!

回答

4

您需要在for循環中遍歷artists數組,然後返回索引,如果該值等於artist值。

for (int i = 0; i < artists.length; i++) { 
     String artistElement = artists[i]; 
     if (artistElement.equals(artist)) { 
      System.out.println(i); 
     } 
    } 

這裏發生了什麼事對我來說:

Please enter an artist... 
Mike Posner 
6 
+0

-1:很酷,現在您可以在全球網站免費解答作業。 –

+2

在解決OP的作業之前,請參閱[如何提問和回答作業問題?](http://meta.stackexchange.com/q/10811/182862),以解決未來類似的問題。 –

+7

@LuiggiMendoza引用你的鏈接:「'不要低估那些真誠地回答作業問題的人,即使他們違反了這些準則。'' – MAV

3

我只是想知道,是否有可能爲用戶鍵入藝術家之一的名字,得到的代碼搜索的數組並返回該值的索引?

是的,這是可能的。

由於你不知道從哪裏開始,我會說你可以開始通過陣列打算(可能使用for循環)和驗證,如果artist變量等於到陣列的當前元素。如果他們是等於,那麼你可以返回數組元素的當前索引。如果沒有找到,則返回一個默認值,如-1,您可以處理並返回一條消息,如找不到藝術家

+0

我喜歡這個開始,但是我建議將它寫成一個小的適當命名的方法(並且可能會顯示簽名的樣子)。然後它變得更加自然:「if(knownArtist(artist)){..} else {..}'。 – user2246674

+1

@ user2246674對不起,但是這幾乎佔了50%(或更多)的功課。 –

+0

我不同意。它只是提供將問題劃分爲邏輯上的一部分的指導。作業可以在沒有這個建議的情況下完成(按照本答案中的指導)。 – user2246674

5

對於未分類的數組,可以選擇將藝術家放在列表中並使用List.indexOf()

List<String> artistsList = Arrays.asList(artists); 
... 
int index = artistsList.indexOf(artist); 

如果藝術家已排序,則可以使用Arrays.binarySearch()

2

你可以做到這一點,像這樣:

int index = -1; 

for (int i = 0; i < artists.length; i++) { 
    if (artist.equals(artists[i])) 
     index = i; 
} 

if (index == -1) 
    System.out.println("Artist not found"); 
else 
    System.out.println("Index of artist: " + index); 
} 

這並不像tieTYT的解決方案,侃侃而談,但不會把戲。索引設置爲-1。 for循環將每個藝術家與數組中的每個值進行比較。如果找到匹配項,則將索引設置爲元素的索引。

在for循環之後,如果索引仍爲-1,則會通知用戶未找到匹配項,否則會輸出相應的藝術家和索引。

for循環的用戶是滾動數組內容並將元素與給定值進行比較的最常用方法。通過調用artists [i],可以根據輸入字符串檢查數組中的每個元素。

+0

-1:與@tieTYT相同:請參考[如何提問和回答作業問題?](http:/ /meta.stackexchange.com/q/10811/182862),以解決將來在解決OP作業之前的類似問題。 –

+3

@LuiggiMendoza:如果你想每次嘗試幫助新用戶,你都會在這裏呆很長時間。我將繼續這麼做,因爲有許多有用的SO用戶在我剛開始時幫助了我。 –

+0

如果我那樣,那麼我會低估OP的問題,甚至投票結束。相反,我提供了一個答案,解釋瞭解決問題的一種方法,而不是*給出完整的答案*,使另一個殭屍程序員只需複製/粘貼任何他/她可以在網上發佈的帖子。 –

相關問題