2012-07-14 33 views
0

我寫了一些代碼,它將在10000個隨機數的文件中對1000個密鑰進行順序搜索,並打印出arr發現的密鑰。在10000個隨機數的文件中順序搜索1000個密鑰

以下是下面的代碼。當我運行它,但我沒有得到任何東西。我的錯誤在哪裏?

public class SeqSample2 { 

    public static void main(String[] args) { 
     double[] a; 
     double[] b; 
     a = new double[10000]; 
     b = new double[1000]; 
     for (int i = 0; i < 1000; i++) { 
      a[i] = (int) ((Math.random() * 10000)); 
     } 
     for (int j = 0; j < 1000; j++) { 
      b[j] = (int) ((Math.random() * 1000)); 
     } 

     int lim = a.length - b.length; 
     int i = 0; 
     int j = 0; 
     boolean found = false; 
     for (i = 0; i < lim; i++) { 

      if (b[0] == a[i]) { 
       found = true; 

       for (j = 0; j < b.length; j++) { 
        if (b[j] != a[i + j]) { 
         found = false; 
         break; 
        } 
       } 
       if (found) { 
        System.out.println(b[i]); 
       } else { 
        System.out.println("Not found"); 
       } 
      } 
     } 
    } 
} 
+0

「我運行它,但我沒有得到任何東西」......你需要更具體些。你有任何錯誤?你是否在調試器中逐步瞭解代碼? – Kev 2012-07-14 14:05:29

+0

我不會收到任何錯誤。當我運行它時,我沒有得到任何輸出。 – user1525530 2012-07-14 14:42:02

+0

如何在調試器中運行代碼並告訴我們您發現了什麼以及您認爲可能是錯誤的?向社區展示一層代碼並要求它找出錯誤,並且沒有明顯的努力來自己解決問題,這實際上並不是我們在這裏做的。這裏的訣竅是證明你已經做了所有事情來試圖找出什麼是壞的 - 例如,告訴我們當你在調試器或日誌語句中運行時發現的內容。這就是你如何讓人們解決你的問題。 – Kev 2012-07-14 14:46:09

回答

2

你爲什麼感到驚訝?

  • b[0]是0到1,000之間的隨機數。
  • a[i]i < 1,000的0和10,000之間的隨機數,以及i >= 1,000的0。

如果你運行你的程序了幾次,最終你會得到一個輸出,但大多數時候,if (b[0] == a[i])將是錯誤的,程序會退出,不輸出任何東西。

+0

謝謝,但我不明白你的意思 – user1525530 2012-07-14 13:55:54

+0

你沒有得到任何輸出,因爲你的if條件大部分時間都是假的。如果你運行你的程序幾次,它可能是真的(這些是隨機數字,很難預測!)。 – assylias 2012-07-14 14:44:54