2015-09-07 67 views
-1

我正在處理一個程序,該程序有一個介於1和100之間的隨機數組。用戶被提示輸入一個數字,然後程序必須看到數值是在數組中。我假設只要用戶輸入一個介於1到100之間的數字,該數字將在數組中。如果用戶輸入的數字在數組中,我需要輸出數字在數組中的位置。你如何確定一個數字在隨機生成的數字中的位置?確定數組在一個數組中的位置

import java.util.*; 
public class Lab1 
{ 
public static void main(String args[]) 
{ 
    Scanner input = new Scanner(System.in); 
    int[] myList = new int [100]; 

    System.out.print(" Please enter a number betwen 1 and 100: "); 
    int num = input.nextInt(); 
    if (num > 100) 
    { 
     System.out.println("No Match Found!"); 
    } 
     Random generator = new Random(); 
     int randomIndex = generator.nextInt(myList.length); 


    if (num <= 100) 
    { 
     System.out.println(randomIndex); 
     System.out.println("We found your number"+num+" at position YY in the array"); 
     } 
    else; 

回答

1

您可以一)掃描整個數組:

int index = 0; 
boolean isNumberPresent = false; 
while (index < array.length && !isNumberPresent) { 
    if (array[index]==num) { 
     isNumberPresent = true; 
    } 
    else { 
    index++; 
    } 
} 
// if isNumberPresent = true, then index now contains the number position, otherwise it will be = to array.length if the number is not there. 

或者你也可以b)利用一個集合,如一個ArrayList,而不是一個數組,並使用.indexOf方法。

+1

或c)使用''Arrays#binarySearch''智能。這需要對數組進行排序。 –

+0

@BinkanSalaryman你是對的,但考慮到這個問題,我認爲OP是不是很有經驗,所以我想保持簡單 –

+1

@AndyBrown是的,我想我們可以擺脫休息,以保持它更簡單。 –

1

這是多麼:

int index = 0; 
boolean noMatch = true; 
for(int i=0; i<sizeofarray; i++) { 
    if(array[i] == thenumberyouwanttomatch) { 
     System.out.println("Number found at Index: " + i); 
     index = i; //You can use this variable 'index' to access it's corresponding value outside the loop by using the term array[index] 
     noMatch = false; 
     break; //To Break from the loop and used only if there are no repetitions allowed 
    } 
} 
if(noMatch) { 
    System.out.println("Number not found at any index. Search failed"); 
} 
+0

你可以添加一個''break;''在你找到一個匹配的情況下跳過剩下的部分。 –

+0

@BinkanSalaryman當然可以!編輯:)) –

+0

我不喜歡它 - 它不會使搜索循環外的「找到」索引可用 –

0

爲了讓你更快地進行搜索,你爲什麼不散列/ HashMap中。其他選項是:由於你的隨機數是有限的(1-100),你可能想用你的數字作爲索引。

它可以是布爾數組,如果你只是想知道該數字是否存在,或者是一個短/ int數組來知道計數。

+0

位圖是一個有效的建議,但映射不是:您應該在此情況下使用Set,因爲與該鍵沒有值關聯。 –

+0

嗯..我想到的價值可能是隨機數的「數」。 –

+0

在那種情況下,那麼是的。這就是OP的句子「我假設只要用戶輸入1到100之間的數字,數字就會在數組中」讓我覺得每個數字都是唯一的(否則假設是錯誤的),但是它的代碼不保證它。 :/ –

相關問題