2013-04-10 108 views
0

我有一款Android遊戲正在開發中。我已經完成了大部分工作,但是剛剛注意到了一個錯誤,我不能總是複製,而這正如你所知,這使得它成爲調試的噩夢!我相信它是一個邏輯問題,但我一直盯着它看很久,我看不到它。這是一個排序的數組代碼:陣列有時無法正常工作

// RANDOMISE UP SOME LETTERS // 
    for(int i=0; i<MAX_LETTERS; i++) 
    { 
     int r = rand.nextInt(25);  

     // SAVE THIS LETTER // 
     lettersToUse[i] = letters[r];   
    }  

    // NOW MAKE SURE WE COPY IN OUR WORD // 
    for(int i=0; i<nameLen; i++) 
    { 
     int r = rand.nextInt(MAX_LETTERS); 

     Letter tmpLetter = new Letter(); 
     tmpLetter = letters[lettersInName[i]];      

     while(in_array(lastElementsUsed, r)) 
     { 
      r = rand.nextInt(MAX_LETTERS); 
     } 

     lastElementsUsed[i] = r;    

     if(!in_array(lettersToUse, tmpLetter.getLetter())) 
     {    
      lettersToUse[r] = tmpLetter; 
     } 
    } 

我有18個允許字母的數組(在應用程序)。第一個循環(顯然)只是挑選一些隨機字母。第二個循環確保最終的18個字母中至少包含一個被猜測的單詞。

問題是:大多數時候它的工作原理是完美無瑕的。在看似隨機的時間間隔內,最終陣列將會丟失被猜測的單詞中的一個字母。它並不總是在這個詞的同一個地方。

任何人都可以看到我的邏輯問題嗎?如果我錯過了一個重要的難題,我很樂意提供更多的信息和代碼!

TIA。

+0

我猜他們已經被打亂那'字母[]'是一個字母數組? – 2013-04-10 16:02:09

+0

不,字母[]是我的Letter類的數組。我會後的變數太多: \t'私人最終詮釋MAX_LETTERS = 18;'\t \t'私信[] =字母新信函[26];' \t'私信[] lettersToUse =新函[MAX_LETTERS] ;' – LokiSinclair 2013-04-10 16:05:10

+2

添加變量的問題,而不是作爲評論 – 2013-04-10 16:09:19

回答

2

這種方法似乎簡單了很多:

for (int i=0; i<(MAX_LETTERS-wordLength); i++) 
{ 
    int r = rand.nextInt(25);  

    // SAVE THIS RANDOM LETTER // 
    lettersToUse[i] = letters[r];   
} 
for (int i=MAX_LETTERS-wordLength; i<MAX_LETTERS; i++) 
{ 
    // SAVE THIS LETTER OF THE WORD // 
    lettersToUse[i] = lettersInName[r]; //I think that lettersInName is the right variable name to use, hopefully you understand what I'm trying to do here   
} 
lettersToUse.shuffle() //or similar method for whatever array type you're using 

然後確保你有你的話加18的其餘部分都充滿了隨機的,並且