Я пошел дальше и создал работоспособный пример того, что вы просите. Мне пришлось сделать несколько предположений относительно вашего класса.
Вот вывод.
ABCDEFGH
1 .X.X.X.X 1
2 ........ 2
3 ........ 3
4 ........ 4
5 ........ 5
6 ........ 6
7 ........ 7
8 ....Y... 8
ABCDEFGH
Вот пример работоспособного примера. Я объясню свои рассуждения после кода.
package com.ggl.testing;
import java.util.ArrayList;
import java.util.List;
public class GameBoard {
private static String[] playerXCoordinates =
{"B1", "D1", "F1", "H1"};
private static String[] playerYCoordinates =
{"E8"};
public static void main(String[] args) {
GameBoard gameBoard = new GameBoard(8, 8);
gameBoard.setPlayersX(playerXCoordinates);
gameBoard.setPlayersY(playerYCoordinates);
System.out.println(gameBoard.toString());
}
private int width, height;
private List<String> playersX;
private List<String> playersY;
public GameBoard(int width, int height) {
this.width = width;
this.height = height;
this.playersX = new ArrayList<String>();
this.playersY = new ArrayList<String>();
}
public void setPlayersX(String[] players) {
for (int i = 0; i < players.length; i++) {
playersX.add(players[i]);
}
}
public void setPlayersY(String[] players) {
for (int i = 0; i < players.length; i++) {
playersY.add(players[i]);
}
}
@Override
public String toString() {
String newLine = System.lineSeparator();
StringBuilder builder = new StringBuilder();
builder.append(createAlphaLine());
builder.append(newLine);
for (int i = 0; i < height; i++) {
builder.append(createBoardLine(i + 1));
builder.append(newLine);
}
builder.append(createAlphaLine());
return builder.toString();
}
private StringBuilder createAlphaLine() {
StringBuilder builder = new StringBuilder();
builder.append(" ");
for (int i = 0; i < width; i++) {
char c = (char) (i + 'A');
builder.append(c);
}
return builder;
}
private StringBuilder createBoardLine(int index) {
StringBuilder builder = new StringBuilder();
builder.append(String.format("%2d", index));
builder.append(" ");
for (int i = 0; i < width; i++) {
char c = (char) (i + 'A');
String s = Character.toString(c) + index;
if (playersX.contains(s)) {
builder.append("X");
} else if (playersY.contains(s)) {
builder.append("Y");
} else {
builder.append(".");
}
}
builder.append(" ");
builder.append(String.format("%2d", index));
return builder;
}
}
Я создал этот класс по одному методу за раз.
Во-первых, я предположил некоторые входные данные для класса. Вы не очень хорошо понимали входные данные класса.
Затем я построил метод toString
по одной части за раз.
Сначала я сделал строки алфавита. Затем, когда эта часть кода сработала, я работал над строками доски. Сначала я сделал номера строк. Наконец, я проверил Lists
, чтобы определить, какой символ печатать.
Разделяй и властвуй. Обычно вы делаете это с классами. В этом случае я сделал это методами. Кодируйте один метод за раз и проверяйте каждый метод.
Разделяй и властвуй.
Отредактировано, чтобы добавить: Просто для удовольствия, вот выход платы 26 X 26.
ABCDEFGHIJKLMNOPQRSTUVWXYZ
1 .X.X.X.X.................. 1
2 .......................... 2
3 .......................... 3
4 .......................... 4
5 .......................... 5
6 .......................... 6
7 .......................... 7
8 ....Y..................... 8
9 .......................... 9
10 .......................... 10
11 .......................... 11
12 .......................... 12
13 .......................... 13
14 .......................... 14
15 .......................... 15
16 .......................... 16
17 .......................... 17
18 .......................... 18
19 .......................... 19
20 .......................... 20
21 .......................... 21
22 .......................... 22
23 .......................... 23
24 .......................... 24
25 .......................... 25
26 .......................... 26
ABCDEFGHIJKLMNOPQRSTUVWXYZ