我想查看一下TheBoard的某些区域是否具有某个值的人物。
public boolean diagonal( char[][] theBoard, char thePlayer) {
int x = 0;
while (x <theBoard.length){
if (thePlayer == theBoard[x][x]) {
x++;
}
else {
return false;
}
}
答案 0 :(得分:1)
由于您使用的是多维数组,请尝试使用嵌套for循环。
public boolean diagonal(char[ ][ ] theBoard, char thePlayer) {
boolean result = false;
int x, y; // These will tell you the coordinates of thePlayer if found on theBoard
for(int i = 0; I < theBoard.length; i++)
for(int j = 0; j < theBoard[i].length; j++)
if (thePlayer == theBoard[i][j]) {
result = true;
// Add if you want to know coordinates of the player
x = i;
y = j;
}
return result;
}
使用多维数组,您需要知道行和列中的值。假设你从i = 0
开始,如果你放入一个循环并查找theBoard[i] [i]
,你将看到第0行col 0,然后你将1添加到i,i++
,现在你正在看第1行第1行。你正在跳过其他一切。这就是为什么你需要一个嵌套的for循环迭代行和列。
请看下面的例子......
0 1 2 3 4 5
0 X X X X X X
1 X X X X X X
2 X X X X X X
3 X X X X X X
4 X X X X X X
5 X X X X X X
如果要检查thePlayer是否仅在数组的对角线索引中,可以使用单个for循环。
public boolean diagonal(char[ ][ ] theBoard, char thePlayer) {
boolean result = false;
int x; // This will tell you the coordinates of thePlayer if found on theBoard
for(int i = 0; I < theBoard.length; i++)
if (thePlayer == theBoard[i][i]) {
result = true;
// Add if you want to know coordinates of the player
x = i;
}
return result;
}
在我看来,对于像这样的东西,使用for循环更容易。 while循环基本上是以不同的方式实现的,但在这种情况下,for循环看起来更干净,更容易理解。最后,由您来决定哪一个更容易实现。
答案 1 :(得分:0)
for(char[] firstarray : theBoard){
for(char ch : firstarray){
boolean matches = (thePlayer == ch) ? true : false;
if(matches){
System.out.println("matchFound");
}else{
System.out.println("no match");
}
}
}
因为你有一个二维数组,你需要循环数组两次。你可以使用普通for循环bt使用增强的for循环会更容易。
答案 2 :(得分:0)
public boolean diagonal( char[][] theBoard, char thePlayer) {
for(int i = 0; I < theBoard.length; i++)
for(int j = 0; j < theBoard[i].length; j++)
if (thePlayer == theBoard[i][j]) {
return = true;
}
return false;
}