В настоящее время я сталкиваюсь с проблемой, связанной с этим методом getSurroundingSumGrid (), который должен брать данные из более ранней сетки, построенной на основе данных текстового файла, и использовать ее для определения новых значений в массиве sumGrid. Массив STATICGRID создается сначала с правильными значениями, но затем при продолжении for l oop значения STATICGRID меняются на то, что я установил для sumGrid. У меня нет определенного кода, где STATICGRID когда-либо устанавливается равным другому значению, и если я это сделал, это должно выдать ошибку.
public double[][] getSurroundingSumGrid() {
this.sumGrid = getBaseGrid();
for (int rowNum = 0; rowNum < sumGrid.length; rowNum++) {
final double[][] STATICGRID = this.getBaseGrid();
double topNum = 0, botNum = 0, rightNum = 0, leftNum = 0;
for (int colNum = 0; colNum < sumGrid[0].length; colNum++) {
try {
topNum = STATICGRID[rowNum - 1][colNum];
System.out.println("TOPNUM : (" + (rowNum-1) + "," + colNum + ") " + STATICGRID[rowNum-1][colNum]);
} catch (Exception e) {
topNum = STATICGRID[rowNum][colNum];
System.out.println("Top IndexOutOfBoundsException: " + STATICGRID[rowNum][colNum] + " used instead.");
}
try {
botNum = STATICGRID[rowNum + 1][colNum];
System.out.println("BOTNUM : (" + (rowNum+1) + "," + colNum + ") " + STATICGRID[rowNum+1][colNum]);
} catch (Exception e) {
botNum = STATICGRID[rowNum][colNum];
System.out.println("Bot IndexOutOfBoundsException: " + STATICGRID[rowNum][colNum] + " used instead.");
}
try {
leftNum = STATICGRID[rowNum][colNum - 1];
System.out.println("LEFTNUM : (" + rowNum + "," + (colNum-1) + ") " + STATICGRID[rowNum][colNum-1]);
} catch (Exception e) {
leftNum = STATICGRID[rowNum][colNum];
System.out.println("Left IndexOutOfBoundsException: " + STATICGRID[rowNum][colNum] + " used instead.");
}
try {
rightNum = STATICGRID[rowNum][colNum + 1];
System.out.println("RIGHTNUM : (" + rowNum + "," + (colNum+1) + ") " + STATICGRID[rowNum][colNum+1]);
} catch (Exception e) {
rightNum = STATICGRID[rowNum][colNum];
System.out.println("Right IndexOutOfBoundsException: " + STATICGRID[rowNum][colNum] + " used instead.");
}
this.sumGrid[rowNum][colNum] = topNum + botNum + rightNum + leftNum;
System.out.println("STATICGRID NEW NUM : " + STATICGRID[rowNum][colNum]);
System.out.println("SUMGRID NEW NUM : " + sumGrid[rowNum][colNum]);
}
}
return this.sumGrid;
}
При выполнении этих тестов с кодом я очень ясно вижу, что данные в обоих массивах со временем меняются и, в свою очередь, дают неверные результаты. Я пытался около 2 часов просто перемещать вещи и не могу понять, как заставить это работать должным образом.
Как вы можете даже видеть, я даже пытался перестраивать массив STATICGRID каждый раз Формула l oop завершена, и это даже не помешает результату. Он делает то же самое, независимо от того, где вы поместили STATICGRID (снаружи или внутри на самом верхнем уровне для l oop, и не важно, окончательный он или нет), он делает то же самое , Посмотрев на него так долго, я не могу понять, почему мой код не работает, и у меня возникло небольшое ощущение, что это оператор try-catch, но я бы даже не знал, почему. Я не знаю тонны об этом утверждении и о том, что он делает полностью, но причина, по которой он там, заключается в том, что данные могут получить исключение IndexOutOfBoundsException, поэтому вместо того, чтобы получать их, они вместо этого будут считать себя для каждого исключения IndexOutOfBoundsException, полученного в соответствии с инструкциями присваивания.
Спасибо, и я надеюсь, что это имеет смысл.