标记为重复后:
好的,我看到现在这是重复的,我为一个看似愚蠢的问题道歉。从我的角度来看,很难意识到要搜索""在线解决这个问题,因为我不知道以这种方式使用==
字符串是一个问题!尽管如此,我仍然想知道为什么使用test
数组仍然在代码底部的for
循环中工作,尽管它使用==
检查而不是{{1但它不适用于使用存储的.equals()
输入创建的数组?这是因为其中一种方法仍然可以用Scanner
而不是p
查找==
,这让我觉得这是存储导致问题和外观的数组的方法在错误的地方寻求答案。
问题:
我试图为我在Java中工作的问题制作一个简单的AI,其中一部分需要使用Java .equals()
库存储用户输入才能生成一个数组字符串代表游戏板或"网格"。我决定存储此Scanner
" grid"的输入。逐个,要求用户输入当前阵列位置的元素。数组是一个二维数组,输入通过两个array
循环逐个存储,一个嵌套在另一个循环中,你可以看到我在下面提供的代码的开头附近。我创建了一个名为for
的方法,它以网格的形式打印出二维数组的内容,它似乎正确地输入了输入并且电路板显示正确。
然而,当我尝试搜索这个" grid"在使用输入存储它之后(通过使用displayGrid
循环,正如您在代码段末尾看到的那样)for
语句即使在if
语句中也无法验证为true
我已经存储了这封信" p"在扫描程序将输入存储到数组中时运行程序的第一部分,displayGrid
方法实际打印出数组正确显示 实际上是" p& #34;在数组中。在任何情况下,这部分代码都应该检查是否存在" p"在数组中,如果返回它我尝试做的列位置,但它总是返回0,因为它无法验证if
语句为true
。
最奇怪的是,如果我在代码的最开头创建一个由字符串组成的测试数组,并尝试在代码底部的循环确实找到了这个test
数组" p"并打印它的列值。
那么有什么想法为什么底部的循环找不到" p"从代码开头附近的扫描仪输入创建的数组的值 - 即使我的displayGrid
方法显示此数组确实包含" p"?提前谢谢!
注意:我还没有包含其余的代码,因为它基本上无关紧要,但如果确实需要,我可以发布它。
public static void main(String[] args) {
// tests
String[][] test = {{"-", "p", "-"},{"-", "-", "-"},{"-", "-", "-"}};
// running main program
Scanner in = new Scanner(System.in);
int n = 0, boardSize;
boardSize = n*n;
do {
System.out.print("Enter n dimension of your game grid (for an nxn sized board): ");
n = in.nextInt();
} while(n < 3 || n > 100 || n % 2 == 0);
String grid[][] = new String[n][n];
System.out.println("Please enter the contents of your array now.");
for (int row = 0; row < n; row++) {
for (int col = 0; col < n; col++) {
System.out.print("Enter element at grid location: [" + row + "] [" + col + "]: ");
String temp;
temp = in.next();
grid[row][col] = temp;
}
}
// display grid for testing
displayGrid(grid, n);
// test
for(int row=0; row<grid.length; row++) {
for(int col=0; col<grid.length; col++) {
if (grid[row][col] == "p") {
System.out.println(col);
}
}
}