⼀个5*5的棋盘,铺满了5种类型的棋⼦,界⾯上分别⽤A~E这五个字⺟表示。棋牌打印出来的形式如下:
A B C D E
B C D E A
C D E A B
D E A B C
E A B C D
实现的功能:
请编写⼀个程序,⽀持下⾯的功能:
1. 程序启动后⽴即从控制台读⼊棋盘的格式,即读⼊五⾏字符串,每⾏的格式为 A,B,D,E,A,代表每⾏上
的棋⼦。
2. 棋盘内容输⼊后,进⼊等待⽤户输⼊命令的状态,程序⽀持3个命令:
2.1 print
打印棋盘布局
2.2 at x y
给出指定坐标的棋⼦以及相邻棋⼦的列表 列表中第⼀个元素是指定坐标位置的棋⼦,相邻棋⼦按照上,
下,左,右的顺序输出(某个⽅位没有邻居则省略) 如输⼊:at 2 2 则输出列表为[(2,2,E), (2,1,D), (2,3,A),
(1,2,D), (3,2,A)]
2.3 exit
退出程序
注意:
1. 坐标系的定义 如果要求输⼊或输出坐标,坐标系的定义为:左上⻆坐标为(0,0),右下⻆坐标为(4,4)。
2. 相邻的定义 有⼀条公共边的格⼦为相邻的格⼦
3. 关于⾮法输⼊ 本阶段不需要考虑⾮法的输⼊,即需求中对于⾮法输⼊的⾏为不做定义。
代码如下:
ChessBoard.java
import java.util.ArrayList;
import java.util.Scanner;
public class ChessBoard {
final private static char[][] chessboard = new char[5][5];
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
for (int i = 0; i < 5; i++) {
String B = input.nextLine().replaceAll(",", "");
String Newstring = B.replaceAll(" ", "");
for (int j = 0; j < 5; j++)
chessboard[i][j] = Newstring.charAt(j);
}
while (true) {
System.out.println("请输入命令(print,at,exit):");
String command = input.nextLine();
if (command.equals("print")) {
printChessBoard();
} else if (command.startsWith("at")) {
String[] parts = command.split(" ");
int x = Integer.parseInt(parts[1]);
int y = Integer.parseInt(parts[2]);
getNeighbors(x, y);
} else if (command.equals("exit")) {
break;
}
}
System.exit(0);
}
private static void printChessBoard() {
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++)
System.out.print(chessboard[i][j] + " ");
System.out.println();
}
}
private static void getNeighbors(int x, int y) {
ArrayList<String> neighbors = new ArrayList<>();
neighbors.add("(" + x + "," + y + "," + chessboard[y][x] + ")");
// 上方格子
if (y > 0) {
neighbors.add("(" + x + "," + (y - 1) + "," + chessboard[y - 1][x] + ")");
}
// 下方格子
if (y < 4) {
neighbors.add("(" + x + "," + (y + 1) + "," + chessboard[y + 1][x] + ")");
}
// 左边格子
if (x > 0) {
neighbors.add("(" + (x - 1) + "," + y + "," + chessboard[y][x - 1] + ")");
}
// 右边格子
if (x < 4) {
neighbors.add("(" + (x + 1) + "," + y + "," + chessboard[y][x + 1] + ")");
}
System.out.println(neighbors);
}
}
欢迎评论,给出更优代码