У меня возникают проблемы при попытке выяснить, как кодировать сенсорную программу для символов, в основном из-за переменной с именем 'loc'.API был полезен, но поскольку переменная сосредоточена вокруг Location.java и его методов, которые в основном имеют переменную, представляющую (row, col), я наталкиваюсь на кирпичную стену о том, как затем представлять строку / col индивидуально.Я теоретически знаю, как выполнить тест соседей в двумерном массиве, так как в прошлом я выполнял программу MineSweeper, но мне не разрешено изменять здесь какие-либо переменные.Ниже приводится подсказка для этой части проблемы, код местоположения и имя метода для одной из подсказок.Мне не разрешено кодировать остальную часть проблемы без выполнения этой части.Любая помощь будет принята с благодарностью.Спасибо!
"Напишите метод датчика, который принимает двумерный массив символов, местоположение, которое задает индексы строки и столбца, и символ и возвращает логическое значение, если этот символ найден в любом из четырех соседей.заданной координаты (строка, столбец). Рассмотрим массив 6x5:
r\c# 0 | 1 | 2 | 3 | 4 |
===#===|===|===|===|===|
0 # | | | | |
1 # | | | | |
2 # | i | b | j | |
3 # | a | x | c | |
4 # | l | d | k | |
5 # | | | | |
Например, заданное расположение (3,2) для строки = 3, столбца = 2 (как отмечено 'x'), символы a, b, c и d считаются соседями в координатах (3,1), (2,3), (3,3) и (4,2) соответственно. Символы i, j, k, lне считаются соседями по диагонали.
Таким образом, учитывая вышеуказанную матрицу и loc = (3,2), вызов «sensor (matrix, loc, 'a')» вернет true, тогда как «sensor(matrix, loc, 'j') "вернул бы" false ". То есть" a "является соседом" x ", но" j "по диагонали не считается соседом для этой модели."
public static boolean sensor(char[][] world, Location loc, char test)
Location.java:
/**
* @class This class holds the cell indices (row, column) for a 2D array
*/
import java.util.Random;
public class Location {
/** row of the array */
public int row;
/** column of the array */
public int col;
/** Private instance of random number generator */
private static Random rand = new Random();
/** Construct location at (0, 0) */
public Location() {
row = 0;
col = 0;
}
/**
* Copy constructor
*
* @param loc
* location to copy
*/
public Location(Location loc) {
row = loc.row;
col = loc.col;
}
/**
* Construct location at given coordinates
*
* @param i
* i^th row
* @param j
* j^th column
*/
public Location(int i, int j) {
row = i;
col = j;
}
/**
* Construct location at random point within max width (w) and height (h)
*
* @param height
* = height (number of rows)
* @param width
* = width (number of columns)
* @param random
* boolean flag to generated a random number otherwise (0,0)
*/
public Location(int height, int width, boolean random) {
if (random) {
row = rand.nextInt(height);
col = rand.nextInt(width);
}
}
/**
* formatted string that shows the row and column data
*
* @return formatted String
*/
@Override
public String toString() {
return String.format("(% 2d, % 2d)", row, col);
}
/**
* Compare two locations
*
* @param loc
* @return true if row and col values are equal, false otherwise
*/
@Override
public boolean equals(Object loc) {
if (loc == null) {
return false;
}
if (loc.getClass() != getClass()) {
return false;
}
Location loc2 = (Location) loc;
return (loc2.row == row) && (loc2.col == col);
}
/**
* Clones existing location and creates a new instance
*
* @return reference to the new instance
*/
@Override
public Location clone() {
return new Location(row, col);
}
}