2016-01-04 37 views
0

這是我目前正在處理的一些遊戲的一些代碼。如何檢查一個數組的元素是否與前面任何元素相同

public void compareGuess() { 
    black = 0; 
    white = 0; 
    List<String> previousBoard; 
    for (i=0; i<numColours; i++) { 
     if(Arrays.asList(mySecret).contains(Board[row][i])) { 
      if (Board[row][i].equals(mySecret[i])) { 
       black = black + 1; 
      } else { 
       for (int j=i-1; j>=0; j--) { 
        previousBoard = Arrays.asList(Board[row][j]); 
       } 
       if (!Board[row][i].contains(previousBoard)) { 
        white = white + 1; 
       } 
      } 
     } 
    } 

我只是遇到了與其他語句直接相關的語句有困難。基本上,我需要檢查,如果我目前Board[row][i]元素包含任何先前的元素,因此Board[row][i-1]Board[row][i-2]和等等,如果沒有,那麼我需要1

當我運行遞增白色然而這我得到的錯誤:

incompatible types: List<String> cannot be converted to CharSequence 

有沒有辦法解決這個問題?

+0

初始化附加聲明以上previousBoard變量是什麼類型'Board'?它是一個String [] []'嗎? – RamV13

+0

是的,基本上我只是需要一種方法來檢查Board [row] [i]是否等於任何之前的元素,所以Board [row] [i-1-> 0] –

回答

0

不要你只是想

!previousBoard.contains(Board[row][i]) 

此檢查,看是否Board[row][i]等於先前的元素之一,以取代

!Board[row][i].contains(previousBoard) 

。我知道你說過你想檢查「Board [row] [i]是否包含任何以前的元素」,但Board[row][i]是一個String,所以我認爲你的意思是你想檢查Board[row][i]是否在前面的元素集合中。

此外,我認爲應該根據您想要的功能,該行

previousBoard = Arrays.asList(Board[row][j]); 

不正確。你想連接列表到previousBoard。所以,你應該用

previousBoard.addAll(Arrays.asList(Board[row][j])); 

List<String> previousBoard = new LinkedList<>(); 
+0

這正是我的問題,對不起,我沒有正確解釋我的問題。謝謝。 –

-1

可以在每個創建子陣列和測試步驟的existens:

1)

Arrays.copyOfRange(Object[] src, int from, int to) 

2)

Arrays.asList(someArray).contains(value); 

在我眼裏,你可以創建第二個陣列,在每個步驟中檢查存在並將新值添加到第二個數組。

+0

1)我可以使用String [] []而不是一個對象。我只需要用它自己測試一個2D數組的一行。 –

相關問題