2012-11-06 146 views
1

嘿即时完成这个tic tac脚趾项目,我在我的棋盘类中有一个错误,在我的checkWin方法中,赢家= board [0] [i];作为Int和String的不兼容错误出现。我已经通过使用Integer.toString()命令解决了这个问题,但它不适用于此。有任何想法吗?以下是checkWin方法的代码。类型Int和字符串不兼容

public boolean checkWin() 
{ 
    { 
     int i; // i = column 
     int j; // j = row 
     int count; 
     int winner; 

      winner = empty; // nobody has won yet 

// Check all rows to see if same player has occupied every square. 

     for (j = 0; j < boardSize; j ++) 
{ 
     count = 0; 
    if (board[j][0] != Integer.toString(empty)) 

    for (i = 0; i < boardSize; i ++) 
    if (board[j][0] == board[j][i]) 
    count ++; 
    if (count == boardSize) 
    winner = (board[j][0]); 
} 

// Check all columns to see if same player has occupied every square. 

    for (i = 0; i < boardSize; i ++) 
{ 
    count = 0; 
    if (board[0][i] != Integer.toString(empty)) 
    for (j = 0; j < boardSize; j ++) 
    if (board[0][i] == board[j][i]) 
    count ++; 
    if (count == boardSize) 
    winner = board[0][i]; 
} 

// Check diagonal from top-left to bottom-right. 

    count = 0; 
    if (board[0][0] != Integer.toString(empty)) 
    for (j = 0; j < boardSize; j ++) 
    if (board[0][0] == board[j][j]) 
    count ++; 
if (count == boardSize) 
winner = board[0][0]; 

// Check diagonal from top-right to bottom-left. 

count = 0; 
if (board[0][boardSize-1] != Integer.toString(empty)) 
for (j = 0; j < boardSize; j ++) 
if (board[0][boardSize-1] == board[j][boardSize-j-1]) 
count ++; 
if (count == boardSize) 
winner = board[0][boardSize-1]; 

// Did we find a winner? 

if (winner != empty) 
{ 
if (winner == Xstr) 

System.out.println("\nCongratulations! P1 You win!"); 
else if (winner == Ostr) 

System.out.println("\nCongratulations! P2 You win!"); 
else 


return true; 
} 



} 
+0

你的董事会是什么[] []类型? – PermGenError

+0

在班上讲清楚,板子是私人String [] []板子; – user1801642

+3

使用['Integer.valueOf(String)'](http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/Integer.html#valueOf(java.lang.String))将您的字符串值转换为整数。 – toniedzwiedz

回答

0
winner = board[0][i]; 

winner是一个int原始类型并board是多维字符串数组。

你想分配一个字符串一个int因此不兼容错误int和string

String[][] board; 

在其索引处具有字符串,当您尝试访问board[0][i]时,您正在检索字符串。

如果主板数组包含像

 boards= {{"1"},{"2"}}; 

号码的字符串表示,然后使用的Integer.parseInt(),接受字符串作为参数并返回一个整数。

winner = Integer.parseInt(board[0][i]); 

,但请不要忘记,如果传递给parseInt函数的字符串不是一个字符串的有效整数represetation它会抛出NumberFormatException的

相关问题