2013-11-15 114 views
0

下面是我的代碼:Count個字符,爪哇

public int maxTurns = 0; 
public String[][] bombBoard = new String[9][9]; 

... 

public void loadBombs() 
{ 
    //loadArray(); 
    Random randomGen = new Random(); 
    for (int u=1; u<=9; u++) 
    { 
     int randomRow = randomGen.nextInt(9); 
     int randomCol= randomGen.nextInt(9); 
     bombBoard[randomRow][randomCol] = "@"; 
    } 

    //counting @'s -- setting variable 
    for (int d = 0; d < bombBoard[bombRow].length; d++) 
    { 
     for (int e = 0; e < bombBoard[bombCol].length; e++) 
     { 
      if (bombBoard[d].equals("@") || bombBoard[e].equals("@")) 
      { 
       maxTurns++; 
      } 
     } 
    } 

所有我想要做的是多維數組中的計數的(@)量,並將其分配給一個變量稱爲maxTurns 。

很可能非常簡單,今晚只是有一個非常困難的時間。離開Java>太多時間了。 <

回答

2

該行等於字符@與整個dth行或eth行。沒有意義,因爲數組行不能等於單個字符。

if (bombBoard[d].equals("@") || bombBoard[e].equals("@")) 

相反,像這樣訪問

if (bombBoard[d][e].equals("@")) 

單個細胞併爲循環您之前即計數前初始化maxTurns

maxTurns = 0; 
+0

是不是第一行'public int maxTurns = 0;'初始化它? –

+0

哦,我錯過了這一點,但確保在計算前必須爲零,不得以任何其他方式更改(例如,在另一種方法或其他類中,因爲您的字段是「public」),否則您將得到錯誤的結果! – luiges90

+0

太好了。感謝您的幫助。我會刺穿它,讓你知道我的結果。 –

0

您需要更改,如果codition

 if (bombBoard[d].equals("@") || bombBoard[e].equals("@")) 

 if (bombBoard[d][e].equals("@")) 

您正在使用二維數組,並做array[i][j]可以填充其對加文位置值。

0

你想從整個數組或數組的某些部分只計數嗎?

從代碼片斷你在上面了,我真的不能告訴你如何遍歷數組,因爲我不知道什麼是

bombBoard[bombRow].length and bombBoard[bombCol].length 

但是,如果你想要遍歷整個數組,想你應該只使用:

for (int d = 0; d < 9; d++) // as you declared earlier, the size of array is 9 
{ 
    for (int e = 0; e < 9; e++) // as you declared earlier, the size of array is 9 
    { 
     if (bombBoard[d][e].equals("@")) 
     { 
      maxTurns++; 
     } 
    } 
}